ElasticSearch 中的分类评分



假设我在 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没有提供一种根据相对分数切断一些点击的方法。为了做到这一点,你应该提前知道最高分,根据搜索查询本身和索引的当前状态,最高分可能会有很大差异。实现此目的的一种不太优雅的方法是从第一个请求中获得最高分,该请求将结果的大小限制为 1,然后在第二个请求中使用相对min_score来过滤结果。另一方面,可以通过在客户端手动过滤常规查询的结果来实现相同的目的。

最新更新