2008-08-02 59 views
36

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

也就是说,如果我搜寻:

  • 名称 - 约翰·史密斯
  • DOB - 1934年11月11日

分区0会返回一个分值的0.345

分区1将返回0.337分数

两者都完全匹配名称和DOB。

回答

18

scoring包含逆文档频率(IDF)。如果术语“John Smith”位于一个分区中,则为0,100次,并且在分区1中为一次。搜索John Smith的分数将在分区1中搜索得更高,因为这个词更加稀缺。

为了解决这个问题,您不得不让索引覆盖所有分区,否则您需要重写IDF。

+1

或者你可以从所有指标构建一个多分析器。 – 2009-10-14 18:00:59

13

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

如果你有不同的索引(这是收录更多/更少或不同的数据),得分会有所不同:

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

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

+2

已更新的链接: http://lucene.apache.org/java/2_4_0/scoring.html – 2009-07-17 15:24:43