Lucene分数结果
时间:2020-03-05 18:37:20 来源:igfitidea点击:
在Lucene中,如果我们有多个索引,每个索引仅覆盖一个分区。为什么对不同索引进行相同的搜索会返回分数不同的结果?来自不同服务器的结果完全匹配。
即如果我搜索:
名字-约翰·史密斯(John Smith)DOB-1/11/11
分区0将返回0.345的分数
分区1的得分为0.337
两者在名称和DOB上完全匹配。
解决方案:
计分包含反向文档频率(IDF)。如果术语" John Smith"在一个分区中,则为0、100次,在分区1中,则为一次。搜索约翰·史密斯(John Smith)的得分会更高,因为该术语更加稀缺,因此在分区1中的搜索得分更高。
为了解决这个问题,我们将不得不使索引遍历所有分区,否则我们将需要覆盖IDF。
因为如果我没有完全弄错的话,分数是由索引决定的。
如果我们有不同的索引(被索引的更多/更少或者不同的数据),则分数将有所不同:
http://lucene.apache.org/core/3_6_0/scoring.html
(警告:包含数学:-))
我们可能还对explain()方法的输出以及由此产生的Explanation对象感兴趣,这将使我们对事物的评分方式有所了解。