【问题标题】:Lucene multiple indexes : Normalize document scores?Lucene 多个索引:规范化文档分数?
【发布时间】:2010-11-11 17:38:55
【问题描述】:

假设我在几台 PC 上有多个 lucene 索引(不是副本)。

我查询每个索引,然后合并结果。 有什么方法可以标准化文档分数,以便我可以按分数(相关性)排序?

我的意思是,索引 A 中的文档 A 的分数无法与索引 B 中的文档 B 相提并论,除非我进行某种标准化......不是这样吗?

谢谢 罗伊

【问题讨论】:

    标签: c# lucene


    【解决方案1】:

    首先,研究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 评分不适合简单的标准化。我建议您尝试使文档分布尽可能随机,然后比较您在两个索引中的命中排名。

    【讨论】:

    • +1 随机分发文档。您必须确保这确实是一个问题。在大多数情况下,索引之间的不同 DF 值不会真正伤害到您。
    • 我知道这是一个旧答案,但只是让您知道某些链接已损坏
    • @AndyMcCluggage - 我已经更新了当前 Lucene 版本的断开链接。这应该给你一年左右的时间,直到 Lucene 版本取代当前版本。
    【解决方案2】:

    用于比较文档 A 在索引 X 和 Y 上的得分。我计算 x = score(A,X) / max score of any document that is a hit for search on index Xy = score(A,Y) / max score of any document that is a hit for search on index Y

    x 和 y 现在都在 0 和 1 之间。只需将 x 和 y 相加即可得到最终分数。

    这是一种幼稚的方法。想听听你们的cmets。

    但我不明白您为什么要添加两个不同文档的分数。用例?

    【讨论】:

    • 我相信你误解了这个问题。问题是如何标准化结果集的分数,这对于在一堆索引中执行搜索并显示最相关的结果很有用。值得关注的是,每个指标的内容都会影响结果的评分。如果索引 X 的关键字“motorcycle”出现频率较低,则它可能会为包含该关键字的文档打高分。当将相同的搜索与索引 Y 合并时,假设该关键字的频率很高,来自 X 的文档的得分可能高于来自 Y 的可能更相关的文档。
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2010-10-01
    相关资源
    最近更新 更多