【问题标题】:Elasticsearch - higher scoring if higher frequency search timesElasticsearch - 如果搜索频率越高,得分越高
【发布时间】:2019-09-07 12:49:29
【问题描述】:

假设我有 3 个文档: 甲、乙、丙 所有术语都非常相似,内部分数也非常相似 人们搜索 B 比 A 和 C 更频繁,但 C 比 A 更频繁。 我可以按 B、C、A 等顺序获得分数吗?

【问题讨论】:

  • 您如何定义“搜索频率更高的人”? :-) 如果您可以在 Elasticsearch 可以使用的东西中量化这一点,那么它可能是可能的。

标签: elasticsearch


【解决方案1】:

在您描述的用例中,您无法更改评分/相关性计算的行为。使用例如boosting 的可能性匹配查询以在搜索值时影响评分。但这不合适,因为您只想对文档进行排序。

因此有关搜索频率的信息必须是文档本身的一部分,这意味着它必须是一个自己的字段。然后你可以简单地添加如下的排序子句

{
  "query": {
     // your awesome query...
  },
  "sort": [
     {
       "search_frequency": {
         "order": "desc"
       }
     },
     "_score"
  ]
}

此解决方案中的挑战 是保持字段search_frequency 的值是最新的。您可以通过Update API 进行操作。

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2012-01-15
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多