弹性搜索:得分为百分比

时间:2015-09-22 15:03:27

标签: elasticsearch

是否可以对弹性搜索进行查询,以便将分数作为最高分数的百分比返回?到目前为止,它会返回"_score": 0.00786336,之类的值以及max_score": 0.13435546之类的最高分数,因此我可以尝试转换结果,但我希望结果已经是百分比,所以我可以使用最低分,例如40%。

简而言之:有没有办法让_score达到最高分的百分比,还是有另一种设定最低分的方法? (似乎很难,因为max_score似乎是随机的)

2 个答案:

答案 0 :(得分:2)

max_score不是随机的,它只是查询结果集中所有分数的max

  

The max_score value is the highest _score of any document that matches our query.

例如,如果您的_score值为:[0.00786336, 0.0123, 0.0813523, 0.13435546],那么您的max_score0.13435546

基于匹配的相关性,_score可能有多高,也没有限制(即它可能超过1

如果您尝试代表百分比匹配"使用点击率_scoremax_score之间的比率,您将获得不可靠的结果,特别是如果您有很多低得分的点击,几乎没有相关性,但是max_score接近那些低分。

如果您尝试按最低分数过滤,则应使用min_score

另见"What is Relevance?"

答案 1 :(得分:0)

一种方法是存储查询哈希值和min_score(计算为最大分数的百分比)。例如,如果max_score为1.1,则该查询的min_score可以为0.44,这有助于切断不相关的结果。