Lucene 搜索评分问题

Lucene search scoring issue

我从目录 "test1" 和 "test2" 创建了两个索引。 "test1" 目录有 "file1.java",而 "test2" 有两个文件 "file1.java" 和 "file2.java"。 "file1.java" 在两个目录中是相同的。让索引分别为index1和index2。

现在我用luke分析这两个索引时,发现在index1中搜索某个关键词的分数与index2中生成的分数不同。此关键字仅存在于 "file1.java".

为什么分数不同?在 Lucene 中有什么索引方法可以强制分数相同吗?

lucene 中的分数允许您比较查询结果与单个查询的相关性。它们的设计目的不是让您比较不同索引之间或不同查询之间的结果,或者保存它们并将它们与以后的运行进行比较。它们仅对返回的查询结果集和索引的当前状态有效。请参阅这篇关于 Lucene Scores as Percentages 的文章,详细了解为什么以这种方式使用 lucene 分数是 坏主意

毕竟Lucene是用TF-IDF算法打分的。您应该期望 IDF 分数在包含更多内容的索引中有所不同。 TFIDFSimilarity documentation 详细描述了评分算法。

如果愿意,您当然可以使用许多 Similarity 实现中的任何一个,或者自己创建一个实现。