Solr/Lucene打分算法

叁歲伎倆 2022-06-18 11:20 220阅读 0赞

摘要: 检索模型也就是文档和查询词的相关度的评分方法。Lucene使用布尔模型来确定哪些文档匹配上查询词,使用向量空间模型(VSM)来对这些文档评分。

核心

评分算法中的向量空间模型使用Tf-idf计算权重,对给定的词t和文档x,Tf(t,x)的值和词tx中出现的次数正相关,而idf(t)的值和索引文档集合中包含词t的次数负相关。

相关名词

  • tf/词频 度量一个文档里词出现的频率
  • idf/逆向文件频率 度量一个词出现在索引中的频率
  • coord 文档中发现的查询词的频率
  • lengthNorm 根据索引列中的词总数来衡量一个词的重要度
  • queryNorm 归一化的参数便于比较查询
  • boost(index) 索引时的域的加权
  • boost(query) 查询时的域的加权

tf

函数: sqrt(freq)
意义: 一个词在文档里出现的频率越高,则该文档的分值越高
说明: 多次包含同一个词的文档的相关度更高

idf

函数: log(numDocs(docFreq+1) +1
意义: 一个词越多出现在不同的文档里,则它的分值越低
说明: 常见词的重要性要低于不常见的词

coord

函数: overlap/maxOverlap
意义: 对于查询中的词,文档中包含这些词越多分值越高
说明: 分值高的文档要更多地覆盖查询中的词

lengthNorm

函数: 1/sqrt(numTerms)
意义: 如果匹配上包含较少词的索引列中的词,则这个文档有较高的权重
说明: 如果一个词在含有少量词的列中,则它比在包含较多词的列中的词更重要

queryNorm

函数: 1/sqrt(sumOfSquaredWeights)
意义: 和文档的相关性无关,只是为了让不同的查询之间的分值有可比性

总结

打分算法为了达到如下效果:

  • 包含所有搜索词的文档是好的
  • 匹配很少出现的词比常用词更好
  • 长文档不如短文档好
  • 多次提及搜索词的文档更好

从正常逻辑看,基本符合预期,但是对长文档的打低分有点奇怪。于是,Lucene允许你定义min/max,指定你认为的文档长度应该是什么范围,在这个区间,lengthNorm都是1.0,低于最小值或高于最大值,lengthNorm会以几何形式下降。

发表评论

表情:
评论列表 (有 0 条评论,220人围观)

还没有评论,来说两句吧...

相关阅读

    相关 标签打分规则

    标签都是一些短文本,计算机无法直接使用,需将标签转化为计算机可识别的语言,对所有标签进行归一化计算,这就涉及到了标签的打分机制。 一般,标签打分规则主要考虑因素如下: 1.

    相关 ES打分机制浅析

    ES 打分机制也就是文档的相关性评价,确定文档和查询有多么相关的过程被称为打分(scoring)。尽管精确地理解Elasticsearch是如何计算文档得分这一点并不是必须的,

    相关 Solr/Lucene打分算法

    摘要: 检索模型也就是文档和查询词的相关度的评分方法。Lucene使用布尔模型来确定哪些文档匹配上查询词,使用向量空间模型(VSM)来对这些文档评分。 核心 评分算法中

    相关 评委打分

    【问题描述】        校园卡拉OK比赛设置了7名评委,当一名选手K完歌之后,主持人报出歌手名字后,7位评委同时亮分,按照惯例,去掉一个最高分和一个最低分后,其余5位评委