这些天,我正在使用Elasticsearch完成建议程序,但遇到了一些问题,它总是会产生相似的结果。
假设我搜索以下语句:
"my_suggestion": {
> "text": "ni",
> "completion": {
> "field": "my_name_for_sug"
> }
> }
并得到以下结果:
"my_suggestion" : [ {
"text" : "ni",
"offset" : 0,
"length" : 2,
"options" : [ {
"text" : "Nine West",
"score" : 329.0
}, {
"text" : "Nine West ",
"score" : 329.0
}, {
"text" : "Nike",
"score" : 295.0
}, {
"text" : "NINE WEST",
"score" : 168.0
}, {
"text" : "NINE WEST ",
"score" : 168.0
} ]
} ],
因此,问题是如何合并或聚合“NINE WEST”和“NINE WEST”之类的相同结果。
映射为:
"my_name_for_sug": {
"type": "completion"
,"analyzer": "ik_max_word"
,"search_analyzer": "ik_max_word"
,"payloads": true
,"preserve_separators": false
}
其中ik_max_word是中文特定的分析器,它可以完成标准分析器的工作。
谢谢
最佳答案
弹性建议者会自动对相同的输出进行重复数据删除(至少直到2.x)。我还没有尝试过5.x,并且那里的建议者有一些变化。
问题似乎出在您的索引分析器上,它正在对您的文档建立索引,以便:"text" : "Nine West","text" : "Nine West ","text" : "NINE WEST","text" : "NINE WEST ",
不完全一样。您需要使用分析器为它们建立索引,该分析器将标记小写,并去除多余的空格等。
完成此操作后,您将获得所需的去重复输出的建议。
关于elasticsearch完成建议者产生重复的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39182390/