【发布时间】:2010-11-11 17:38:55
【问题描述】:
假设我在几台 PC 上有多个 lucene 索引(不是副本)。
我查询每个索引,然后合并结果。 有什么方法可以标准化文档分数,以便我可以按分数(相关性)排序?
我的意思是,索引 A 中的文档 A 的分数无法与索引 B 中的文档 B 相提并论,除非我进行某种标准化......不是这样吗?
谢谢 罗伊
【问题讨论】:
假设我在几台 PC 上有多个 lucene 索引(不是副本)。
我查询每个索引,然后合并结果。 有什么方法可以标准化文档分数,以便我可以按分数(相关性)排序?
我的意思是,索引 A 中的文档 A 的分数无法与索引 B 中的文档 B 相提并论,除非我进行某种标准化......不是这样吗?
谢谢 罗伊
【问题讨论】:
首先,研究Lucene Similarity Documentation。在所有因素中,唯一与一个索引不同的是inverse document frequency (idf)。
我建议您使用Luke 或调试器来查看不同索引的 idf 的影响。 您可能会发现这只有很小的影响。
这里是a discussion about using a global idf,这里是Wiki page about distributed search design in Solr。我相信问题还没有解决。
Lucene 评分不适合简单的标准化。我建议您尝试使文档分布尽可能随机,然后比较您在两个索引中的命中排名。
【讨论】:
用于比较文档 A 在索引 X 和 Y 上的得分。我计算 x = score(A,X) / max score of any document that is a hit for search on index X 和 y = score(A,Y) / max score of any document that is a hit for search on index Y。
x 和 y 现在都在 0 和 1 之间。只需将 x 和 y 相加即可得到最终分数。
这是一种幼稚的方法。想听听你们的cmets。
但我不明白您为什么要添加两个不同文档的分数。用例?
【讨论】: