Lucene得分结果

时间:2008-08-02 09:28:18

标签: search lucene

在Lucene中,如果您有多个索引,每个索引只覆盖一个分区。为什么不同索引上的相同搜索会返回不同分数的结果?不同服务器的结果完全匹配。

即。如果我搜索:

  • 姓名 - John Smith
  • DOB - 11/11/1934

分区0 会返回0.345分数

分区1 会返回0.337分数

两者完全匹配名称和DOB。

3 个答案:

答案 0 :(得分:19)

scoring包含反向文档频率(IDF)。如果术语“John Smith”在一个分区中,0,100次,在分区1中,一次。搜索John Smith的分数在分区1中的搜索量会更高,因为该术语更加稀缺。

为了解决这个问题,你必须让你的索引覆盖所有分区,否则你需要覆盖IDF。

答案 1 :(得分:13)

因为如果我没有完全弄错的话,分数是根据索引确定的。

如果您有不同的索引(索引更多/更少或不同的数据),分数会有所不同:

http://lucene.apache.org/core/3_6_0/scoring.html

(警告:包含数学: - ))

答案 2 :(得分:8)

您可能也会对explain() method的输出以及由此产生的Explanation object感兴趣,这会让您了解事情的得分方式。