是否可以对弹性搜索进行查询,以便将分数作为最高分数的百分比返回?到目前为止,它会返回"_score": 0.00786336,
之类的值以及max_score": 0.13435546
之类的最高分数,因此我可以尝试转换结果,但我希望结果已经是百分比,所以我可以使用最低分,例如40%。
简而言之:有没有办法让_score达到最高分的百分比,还是有另一种设定最低分的方法? (似乎很难,因为max_score似乎是随机的)
答案 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_score
为0.13435546
。
基于匹配的相关性,_score
可能有多高,也没有限制(即它可能超过1
)
如果您尝试代表百分比匹配"使用点击率_score
与max_score
之间的比率,您将获得不可靠的结果,特别是如果您有很多低得分的点击,几乎没有相关性,但是max_score
接近那些低分。
如果您尝试按最低分数过滤,则应使用min_score
答案 1 :(得分:0)
一种方法是存储查询哈希值和min_score(计算为最大分数的百分比)。例如,如果max_score为1.1,则该查询的min_score可以为0.44,这有助于切断不相关的结果。