【问题标题】:Lucene Score resultsLucene 评分结果
【发布时间】:2010-09-05 05:59:42
【问题描述】:

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

即如果我搜索:

  • 姓名 - 约翰·史密斯
  • 出生日期 - 1934 年 11 月 11 日

分区 0 将返回 0.345

分区 1 将返回 0.337 的分数

姓名和出生日期都完全匹配。

【问题讨论】:

    标签: search lucene


    【解决方案1】:

    scoring 包含逆文档频率 (IDF)。如果术语“John Smith”在一个分区中,0 次,100 次,在分区 1 中,一次。在分区 1 中搜索 John Smith 的得分会更高,因为该词更稀缺。

    要解决这个问题,您必须让索引覆盖所有分区,否则您需要覆盖 IDF。

    【讨论】:

    • 或者你可以从所有索引构建一个多搜索器。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      您可能还对explain() method 的输出和生成的Explanation object 感兴趣,这将使您了解事物的评分方式。

      【讨论】:

        猜你喜欢
        • 2012-07-09
        • 1970-01-01
        • 2011-04-04
        • 2019-05-04
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多