我有一个索引如下:
{
"entities": {
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "stop_delimiter_stemmer_analyzer"
}
}
}
}
}
下面是stop_delimiter_stemmer_analyzer
(我的自定义分析器):
"analysis": {
"analyzer": {
"stop_delimiter_stemmer_analyzer": {
"tokenizer": "whitespace",
"filter": [
"word_delimiter_graph",
"german_stemmer",
"english_stemmer",
"french_stemmer",
"italian_stemmer",
"multi_language_stopwords"
],
}
},
"filter": {
"german_stemmer": {
"type": "stemmer",
"name": "light_german"
},
"english_stemmer": {
"type": "stemmer",
"name": "english"
},
"french_stemmer": {
"type": "stemmer",
"name": "light_french"
},
"italian_stemmer": {
"type": "stemmer",
"name": "light_italian"
},
"multi_language_stopwords": {
"type": "stop",
"stopwords": [
"_english_",
"_french_",
"_italian_",
"_dutch_"
]
}
}
}
如果我使用match
查询来搜索Preuve à futur
,Elasticsearch会将其作为第一个结果找到。
但如果我搜索它作为preuve à futur
,它发现它在这么多的排名较低.
我需要将不区分大小写的完全匹配添加到搜索中,以便在第一个结果中查找完全匹配(不区分大小写或区分大小写)。
我怎么能那样做呢?
谢谢你的好意。
注意:我使用ElasticSearch7.16
1条答案
按热度按时间balp4ylt1#
只需使用
lowercase
标记过滤器作为分析器定义的filter
列表中的第一项,这样所有标记都将以小写形式编制索引,搜索时间也与match
查询使用相同的分析器一样,搜索字符串也将以小写形式标记化,您将能够以不区分大小写的方式获得结果。