Elasticsearch: 权威指南 » 深入搜索 » 控制相关度 » 相关度评分背后的理论 学习

Elasticsearch: 权威指南 » 深入搜索 » 控制相关度 » 相关度评分背后的理论 学习

##词频/逆向文档频率(TF/IDF)
##当匹配到一组文档后,需要根据相关度排序这些文档,不是所有的文档都包含所有词,有些词比其他的词更重要。一个文档的相关度评分部分取决于每个查询词在文档中的 权重 。
##词频
##词在文档中出现的频度是多少?频度越高,权重 越高 。 5 次提到同一词的字段比只提到 1 次的更相关。词频的计算方式如下:

##tf(t in d) = √frequency

##词 t 在文档 d 的词频( tf )是该词在文档中出现次数的平方根。

##如果不在意词在某个字段中出现的频次,而只在意是否出现过,则可以在字段映射中禁用词频统计:
##逆向文档频率
##词在集合所有文档里出现的频率是多少?频次越高,权重 越低 。常用词如 and 或 the 对相关度贡献很少,因为它们在多数文档中都会出现,一些不常见词如 elastic 或 hippopotamus ##可以帮助我们快速缩小范围找到感兴趣的文档。逆向文档频率的计算公式如下:

##idf(t) = 1 + log ( numDocs / (docFreq + 1))

##词 t 的逆向文档频率( idf )是:索引中文档数量除以所有包含该词的文档数,然后求其对数。

##字段长度归一值
##字段的长度是多少?字段越短,字段的权重 越高 。如果词出现在类似标题 title 这样的字段,要比它出现在内容 body 这样的字段中的相关度更高。字段长度的归一值公式如下:

##norm(d) = 1 / √numTerms

##字段长度归一值( norm )是字段中词数平方根的倒数。

##字段长度的归一值对全文搜索非常重要,许多其他字段不需要有归一值。无论文档是否包括这个字段,索引中每个文档的每个 string 字段都大约占用 1 个 byte 的空间。对于 not_analyzed 字符串字段的归一值默认是禁用的,而对于 analyzed ##字段也可以通过修改字段映射禁用归一值:

##结合使用
##以下三个因素——词频(term frequency)、逆向文档频率(inverse document frequency)和字段长度归一值(field-length norm)——是在索引时计算并存储的。最后将它们结合在一起计算单个词在特定文档中的 权重 。
##weight(text:fox in 0) [PerFieldSimilarity]: 0.15342641
##result of:

fieldWeight in 0 0.15342641

product of:

tf(freq=1.0), with freq of 1: 1.0

idf(docFreq=1, maxDocs=1): 0.30685282

fieldNorm(doc=0): 0.5

##词 fox 在文档的内部 Lucene doc ID 为 0 ,字段是 text 里的最终评分。

##词 fox 在该文档 text 字段中只出现了一次。

##fox 在所有文档 text 字段索引的逆向文档频率。

##该字段的字段长度归一值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值