【elasticsearch】Apache Lucene默认评分公式解释

1.何时文档被匹配上

当一个文档经过Lucene返回,则意味着该文档与用户提交的查询是匹配的。
在这种情况下,每个返回的文档都有一个得分。得分越高,文档相关度更高,
从Apache Lucene及其评分公司来看是这样。同一个文档针对不同查询的得分是
不同的,而且比较某文档在不同查询中的得分是没有意义的。需要注意,同一 
文档在不同查询中的得分不具备可比较性,不同查询返回文档中的最高得分也
不具备可比较性。这是因为文档得分依赖多个因子,除了权重和查询本身的结构,
还包括匹配的词项数目,词项所在字段,以及用于查询规划化的匹配类型等。
在一些比较极端的情况下,同一个文档在相似查询中的得分非常悬殊,仅仅是 
因为使用了自定义得分查询或命中词项数发生了急剧变化

计算文档得分需要考虑如下因子。
文档权重:(document boost):索引期赋予某个文档的权重值。
字段权重:(field boost):查询期赋予某个字段的权重值
协调因子(coord):基于文档中词项命中个数的协调因子,一个文档命中了查询中
的词项越多,得分越高。
逆文档频率:(inverse document  frequency):一个基于词项的因子(在索引期计算
出来并存储在索引中)。一个字段包含的词项数越多,该因子的权重越低,这意味
着Apache Lucene评分公式更"喜欢"包含更少词项的字段。
词频:(term frequency):一个基于词项的因子,用来表示一个词项在某个文档中
出现了多少次,词频越高,文档得分越高。
查询范数(query norm):一个基于查询的归一化因子,它等于查询中词项的权重平方和。
查询范数使不同的查询得分能相互比较,尽管这种比较通常是困难且不可行的。

2.TF/IDF评分公式

TF/IDF(词频/逆文档频率)
score(q,d)=coord(q,d)*queryBoost(q)*V(q)*V(d)/|V(q)| * lengthNorm(d)*docBoost(d)

该公式柔和了布尔检索模型和向量空间检索模型。
Lucene的实际评分公式更加复杂。
得分公式是一个关于查询q 和文档d 的函数,有两个因子coord和queryNorm并不直接
依赖查询词项,而是与查询词项的一个求和公式相乘。
求和公式中每个加数由以下因子连乘所得:词频,逆文档频率,词项权重,范数。

由公式可以导出的一些基本规则:
越多罕见的词项被匹配上,文档得分越高。
文档字段越短,文档得分越高 
权重越高(不论是索引期还是查询期赋予的权重值),文档得分越高。 

由此可见,Lucene将最高得分赋予同时满足以下条件的文档:包含多个罕见词项,
词项所在字段较短。

3.elasticsearch 如何看评分

elasticsearch 使用 Lucene的评分功能,而且我们可以替换默认的评分算法。elasticsearch
使用了Lucene的评分功能但不仅限于Lucene 的评分功能。用户可以使用各种不同的
的查询类型以精确控制文档评分的计算(如:custom_boost_factor查询,constant_score
查询,custom_score查询等),还可以通过使用脚本(scripting)来改变文档得分,
还可以使用 elasticsearch0.90中出现的二次评分功能,通过在返回文档集之上执行
另外一个查询,重新计算前N个文档的文档得分。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值