我有一个用自定义分析器索引的字段,配置如下
"COMPNAYNAME" : {
"type" : "text",
"analyzer" : "textAnalyzer"
}
"textAnalyzer" : {
"filter" : [
"lowercase"
],
"char_filter" : [ ],
"type" : "custom",
"tokenizer" : "ngram_tokenizer"
}
"tokenizer" : {
"ngram_tokenizer" : {
"type" : "ngram",
"min_gram" : "2",
"max_gram" : "3"
}
}
当我搜索一个文本“宜家”我得到以下结果
查询:
GET company_info_test_1/_search
{
"query": {
"match": {
"COMPNAYNAME": {"query": "ikea"}
}
}
}
结果就是结果,
1.mikea
2.likeable
3.maaikeart
4.likeables
5.ikea b.v. <------
6.likeachef
7.ikea breda <------
8.bernikeart
9.ikea duiven
10.mikea media
我希望准确的比赛结果应该比其他结果更重要。你能帮我什么是索引的最佳方式,如果我必须搜索与精确匹配以及泡沫。
提前谢谢。
1条答案
按热度按时间cwdobuhd1#
您可以将ngram标记器与
"search_analyzer": "standard"
有关搜索分析器的详细信息,请参阅此正如@evaldasbuinauskas所指出的,如果您希望只从开始而不是从中间生成标记,那么您也可以在这里使用edge\ngram标记器。
添加索引数据、Map、搜索查询和结果的工作示例
索引数据:
索引Map
搜索查询:
搜索结果: