【问题标题】:When indexing, what are the factors that can affect a term's score when searched编制索引时,哪些因素会影响搜索时某个词的得分
【发布时间】:2013-03-25 04:54:48
【问题描述】:

这个问题有点令人困惑。我是 Lucene 的新手,正在浏览文档。我发现adding boost to a field 增加了该领域的规范,因此在搜索时增加了该术语的分数。

I.E.在索引时向字段添加提升会影响搜索时的分数。我的问题是,除了提升之外,还有其他方法可以做到这一点吗?请指教。

【问题讨论】:

  • 简答,不。提供三种类型的提升(文档、字段和查询),虽然影响分数的因素有很多,但提升是您修改评分的直接途径。如果您需要创建更复杂的评分自定义,则需要某种自定义相似度来处理它。
  • 非常精确。谢谢。 :)

标签: lucene scoring


【解决方案1】:

在 Lucene 4.x 之前,曾经有一个基于向量空间模型的单一评分公式。

以下是影响 Lucene 评分的因素。

1) Tf : 词频,即一个词在文档中的频率。

2) Idf : 逆文档频率 : log(Collection Size / Number of documents that have term) " 这个公式可能会有所不同。

3) Field Boost:你提到的那个。它是在编制索引时提供的。

4) Coord :基于在指定文档中找到多少查询词的评分因子。

5) queryNorm(q) 是一个标准化因子,用于使查询之间的分数具有可比性。这个因素不影响文档排名(因为所有排名的文档都乘以相同的因素),而只是尝试使来自不同查询(甚至不同索引)的分数具有可比性

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

a) 文档提升 - 在将文档添加到索引之前通过调用 doc.setBoost() 进行设置。

b) 字段提升 - 通过在将字段添加到文档之前调用 field.setBoost() 来设置。

c) lengthNorm - 文档添加到索引时根据文档中该字段的标记数计算,因此较短的字段对分数的贡献更大。 LengthNorm 由在索引时生效的 Similarity 类计算。

7) 词条提升:是查询 q 中词条 t 的搜索时间提升

如需深入了解 Lucene 的默认评分公式:查看文档:Lucene Similarity

随着新版 Lucene 4.x 的发布,引入了新的评分公式,如 BM25。更多详情请查看Lucene 4.2 Similarity的子类

您可以实现相似度的子类自定义上述所有评分因素。这是Example...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2017-10-09
    相关资源
    最近更新 更多