Elasticsearch Completion Suggester - 排序建议

标签 elasticsearch

是否可以让 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):
  • 美居汽车旅馆
  • 慕尼黑美居酒店
  • Mercure1
  • Mercure2
  • 美居酒店
  • Mercure3

  • 我希望它们按词法排序,因此“Mercure Hotel”至少排在“Mercure Motel”之前。

    即使我将文本“Mercure2”发布到 _suggest,结果的排序也是相同的。我的期望是 Mercure2 将是第一个建议,如果不是唯一的。

    当我没有发现其他人有同样的问题时,这通常意味着我做错了什么或完全误解了这个话题。我是否对完成建议者期望过高,或者我是否需要进行配置更改以实现我想要做的事情?

    最佳答案

    添加 weight到每个文档——数字越高,它的优先级就越高。

    也就是说,排序你的 output词法字符串,然后枚举它们。最后,从 2 ** 31 - 1 中减去它们的索引(最高优先级)以词汇升序获取建议。

    关于Elasticsearch Completion Suggester - 排序建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27709301/

    相关文章:

    scala - 如何序列化elastic4s ElasticSearch客户端以与Spark RDD一起运行?

    symfony - 如何使用Elastica Search和Symfony2执行嵌套查询

    elasticsearch - 在Elasticsearch中将索引从一台机器复制到另一台机器

    elasticsearch - Elasticsearch 每个用户对文档的访问控制

    elasticsearch - 删除分片分配过滤器

    ruby-on-rails - 从方法返回的对象的索引方法-Elasticsearch

    elasticsearch - 在elasticsearch中更改json实体,是否允许?

    python - 使用Django和Elasticsearch索引新对象

    elasticsearch - 如何让 Elasticsearch 忽略 char_filter 清空的术语?

    angularjs - Jasmine 无法模拟 Elasticsearch 对象