【问题标题】:Clasterized scoring in ElasticSearchElasticSearch 中的分类评分
【发布时间】:2019-02-10 06:03:49
【问题描述】:

假设我在 ElasticSearch 6.2 中有一些复杂的查询,它可以返回下一个命中:

"hits" : [
  {
    ...
    "_score" : 100,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 99,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 50,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 49,
    "_source" : { ... }
    ...
  }
]

或者同样的查询可以返回:

"hits" : [
  {
    ...
    "_score" : 10,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 9.9,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 2,
    "_source" : { ... }
    ...
  },
  {
    ...
    "_score" : 1,
    "_source" : { ... }
    ...
  }
]

如您所见,分数的分布是不均匀的,并且有一组分数接近的项目。我需要包含顶级组项目的结果集。我无法提供合理的min_score,因为对于不同的查询参数,绝对分值可能会有很大差异。无论实际绝对值如何,有什么方法可以让 Elastic 返回得分最高的组?提前谢谢你。

【问题讨论】:

标签: elasticsearch relevance


【解决方案1】:

据我所知,Elasticsearch 没有提供一种方法来根据相对分数切断一些命中。为了做到这一点,您应该提前知道最大分数,这可能会因搜索查询本身和索引的当前状态而有很大不同。实现这一点的一种不太优雅的方法是从第一个请求中获得最大分数,将结果大小限制为一个,然后在第二个请求中使用相对 min_score 来过滤掉结果。另一方面,也可以在客户端手动过滤常规查询的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2016-04-09
    • 2017-09-08
    相关资源
    最近更新 更多