是否可以让 Elasticsearch 完成建议程序按排序顺序返回结果?我正在遵循 this Elasticsearch blog post 中的示例并增加了额外的酒店:
{"name": "Mercure Hotel", "city": "Munich", "name_suggest": "Mercure Hotel"}
{"name": "Mercure Motel", "city": "Munich", "name_suggest": "Mercure Motel"}
{"name": "Mercure1", "city": "Munich", "name_suggest": "Mercure1"}
{"name": "Mercure2", "city": "Munich", "name_suggest": "Mercure2"}
{"name": "Mercure3", "city": "Munich", "name_suggest": "Mercure3"}
当我将以下内容发布到 _suggest 端点时...
{
"hotels":
{
"text": "Me", "completion": {"field":"name_suggest", "size":10}
}
}
...我的结果是这样排序的(所有分数:1):
我希望它们按词法排序,因此“Mercure Hotel”至少排在“Mercure Motel”之前。
即使我将文本“Mercure2”发布到 _suggest,结果的排序也是相同的。我的期望是 Mercure2 将是第一个建议,如果不是唯一的。
当我没有发现其他人有同样的问题时,这通常意味着我做错了什么或完全误解了这个话题。我是否对完成建议者期望过高,或者我是否需要进行配置更改以实现我想要做的事情?
最佳答案
添加 weight
到每个文档——数字越高,它的优先级就越高。
也就是说,排序你的 output
词法字符串,然后枚举它们。最后,从 2 ** 31 - 1
中减去它们的索引(最高优先级)以词汇升序获取建议。
关于Elasticsearch Completion Suggester - 排序建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27709301/