search -Lucene评分结果

Translate

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

即如果我搜索:

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

分区0得分为0.345

分区1得分为0.337

两者在名称和DOB上完全匹配。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

得分包含反向文档频率(IDF)。如果术语“ John Smith”在一个分区中,则为0、100次,在分区1中,则为一次。搜索约翰史密斯(John Smith)的得分会更高,因为该术语更为稀缺,因此在分区1中的搜索得分更高。

为了解决这个问题,您将不得不使索引遍历所有分区,否则您将需要覆盖IDF。

来源
Translate

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

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

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

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

来源
Translate

您可能也对explain()方法,结果Explanation目的,这将使您了解事物的评分方式。

来源