我正在使用弹性搜索完成建议,并且遇到一些问题,它总是会产生类似的结果。
假设我使用以下语句进行搜索:
"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 是一个特定于中国的分析仪,它可以完成标准分析仪的工作。
谢谢
答案 0 :(得分:0)
Elastic Suggesters自动重复删除相同的输出(至少直到2.x)。我还没有试过5.x,那里的建议有一些变化。 问题似乎是您的索引分析器,它正在索引您的文档,以便:
"text" : "Nine West",
"text" : "Nine West ",
"text" : "NINE WEST",
"text" : "NINE WEST ",
不完全一样。您需要使用分析器对其进行索引,该分析器会降低标记,并剥离额外的空间等。
一旦你这样做,你应该得到重复数据删除输出的建议,如你所愿。