Lucene的ScoreDoc.score是什么意思?

dby*_*rne 4 java lucene

我正在执行一个包含多个术语的布尔查询.我只想处理分数高于特定阈值的结果.我的问题是,我不明白这个值是如何计算的.我知道高数字意味着它是一个很好的匹配,低数字意味着它是一个糟糕的匹配,但似乎没有任何上限?

是否可以将范围[0,1]范围内的分数标准化?

baj*_*ife 11

这是一个描述如何在Lucene中计算分数的页面:

http://lucene.apache.org/java/3_0_0/scoring.html

简短的回答是每个文档的分数的绝对值并不真正意味着在给定搜索结果集的上下文之外的任何内容.换句话说,即使您将分数标准化,也没有将分数转换为人类相关定义的好方法.

话虽如此,您可以通过将每个匹配分数除以最高分来轻松地将分数标准化.因此,如果第一个匹配得分是2.5,那么将每个命中的得分除以2.5,你将获得一个介于0和1之间的数字.

  • TopDocs.getMaxScore()提供相同的值,而无需查看匹配的文档 (2认同)