【发布时间】:2011-03-01 17:35:16
【问题描述】:
我正在执行具有多个术语的boolean query。我只想处理高于特定阈值的score 的结果。我的问题是,我不明白这个值是如何计算的。我知道数字高表示匹配好,数字低表示匹配差,但似乎没有上限?
是否可以在 [0,1] 范围内对分数进行归一化?
【问题讨论】:
我正在执行具有多个术语的boolean query。我只想处理高于特定阈值的score 的结果。我的问题是,我不明白这个值是如何计算的。我知道数字高表示匹配好,数字低表示匹配差,但似乎没有上限?
是否可以在 [0,1] 范围内对分数进行归一化?
【问题讨论】:
这是一个描述如何在 Lucene 中计算分数的页面:
http://lucene.apache.org/java/3_0_0/scoring.html
简短的回答是,每个文档的分数的绝对值在给定搜索结果集的上下文之外并不真正意味着任何东西。换句话说,即使您确实对分数进行了标准化,也没有一种很好的方法可以将分数转换为人类对相关性的定义。
话虽如此,您可以通过将每个命中的分数除以最高分数来轻松标准化分数。因此,如果第一个命中的分数是 2.5,然后将每个命中的分数除以 2.5,就会得到一个介于 0 和 1 之间的数字。
【讨论】: