【问题标题】:SOLR and Ratio of Matching WordsSOLR和匹配词的比率
【发布时间】:2017-10-20 18:51:13
【问题描述】:

使用 SOLR 4.3 版,SOLR 似乎更重视匹配项的百分比而不是匹配项的数量。

例如,我们搜索 Dog,然后返回一个只有单词 dog 和其他三个单词的文档。我们还有一篇有数百字的文章,其中包含 27 次 dog 一词。

我希望第二篇文章首先返回。但是,三个单词中只有一个单词的人首先返回。我希望找出 SOLR 中的控制内容,以便我可以进行适当的修改。我查看了 SOLR 文档并看到了提到的 COORD,但似乎表明应该首先返回具有 27 个引用的文章。任何帮助将不胜感激。

【问题讨论】:

    标签: apache search solr


    【解决方案1】:

    对于 4.x Solr 仍然使用常规 TF/IDF 作为其评分公式,您可以查看 Lucene 实现 detailed in the documentation for TFIDFSimilarity

    对于你的问题,影响分数的两个因素是:

    字段的长度,如norm()

    norm(t,d) 封装了一些(索引时间)提升和长度因子:

    • 字段提升 - 通过在将字段添加到文档之前调用 field.setBoost() 进行设置。
    • lengthNorm - 根据文档中该字段的标记数在将文档添加到索引时计算,因此较短的字段对分数的贡献更大。 LengthNorm 由在索引时生效的 Similarity 类计算。

    .. 匹配项的数量(不是它们的频率)由coord() 给出:

    coord(q,d) 是基于在指定文档中找到多少查询词的评分因子。通常,包含更多查询术语的文档将获得比另一个具有较少查询术语的文档更高的分数。这是在 coord(q,d) 中通过搜索时有效的相似度计算的搜索时间因子。

    您的示例中有a few settings in your schema that can affect how Solr 对文档进行评分:

    省略规范

    如果为真,则省略与该字段相关的规范(这会禁用该字段的长度规范化,并节省一些内存)

    .. 这将删除分数的 norm() 部分。

    省略TermFreqAndPositions

    如果为真,则在此字段的帖子中省略词频、位置和有效负载。

    .. 这将消除同一术语多次出现的提升。请注意,这也会删除位置,使短语查询变得不可能。

    但您还应该考虑升级 Solr,因为 6.x 中默认的 BM25 相似性通常表现更好。我不记得是否有 4.3 可用的版本。

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 2010-10-30
      • 2019-05-18
      • 2011-02-28
      • 2019-08-09
      • 1970-01-01
      相关资源
      最近更新 更多