首页 > 技术文章 > Lucene 评分机制一

shm10 2014-03-27 14:32 原文

1. 评分公式

1.1 公式介绍

 

这个公式是Lucene实际计算时使用的公式,是由原型公式推导而来

  1. tf(t in d) 表示某个term的出现频率,定义了term t出现在当前document d的次数。 对于query中的term,出现的越多,得分就越高。
  2. idf(t) 表示反向文档频率。这个参数表示docFreq(term t一共在多少个文档中出现)的反向影响值。它意味着在越少文档中出现的terms贡献的分数越高(物以稀为贵)。
  3. coord(q,d) 是一个基于在该文档中出现了多少个query中的terms的得分因素。越多的查询项在一个文档中,说明些文档的匹配程度越高。默认是出现查询项的百分比。
  4. queryNorm(q) 是一个标准化参数,使不同查询之间可以比较。此因子不影响文档的排序,因为所有有文档都会使用此因子。
  5. t.getBoost() 是一个term 在query 中的搜索时间中的加权, 它在query中指定, 或者被应用程序直接调用setBoost()设置。
  6. norm(t,d)是在索引时进行计算并存储的,在查询时是无法再改变的,除非再重建索引。norm值是被压缩存储的,在查询时取出该值进行文档相关度计算。

参考资料:

    http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html

    http://www.chepoo.com/lucene-score-study.html

 

推荐阅读