Elasticsearch程序员elasticsearch

Elasticsearch如何评分?-Apache Lucene

2017-03-22  本文已影响331人  GhostStories

elasticsearch使用了lucene的评分功能,lucene默认评分机制:TF/IDF(词频/逆文档频率)算法

欢迎访问本人博客:http://wangnan.tech

lucene默认评分机制:TF/IDF(词频/逆文档频率)算法默认评分公式解释

何时文档被匹配上

当一个文档经过lucene返回,则意味着该文档与用户提交的查询时匹配的,在这种情况下,每个返回的文档都会有一个得分,得分越高,文档相关度更高,但是,同一个文档针对不同查询的得分是不同的,比较某个文档在不同查询中的分数是没有意义的,这是因为文档得分依赖多个因子,除了权重和查询本身的结构,还包括匹配的词项的数目,词项所在字段,以及用于查询规范化的匹配类型等。

计算文档得分需要考虑以下因子

TF/IDF评分公式

Lucene理论评分公式

注意,你并不需要深入理解这个公式的来龙去脉,了解它的工作原理非常重要

01.png

上面的公式理论形式糅合了布尔检索模型和向量空间检索模型,我们可以不讨论这个理论评分公式,直接跳到lucene实际评分公式

Lucene实际评分公式

现在让我来看看Lucene实际评分公式:

02.png

解释:这是一个关于查询q文档d的函数,有两个因子coord和queryNorm并不直接依赖查询词项,而是与查询词项的一个求和公式相乘,求和公式中的每个加数由以下因子连乘所得:词频 逆文档频率 词项权重 长度范数

由这个公式我们可以导出一些规则:

elasticsearch如何看评分

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

(注:内容整理自《深入理解elasticsearch》,斜体为本人添加的理解)

上一篇下一篇

猜你喜欢

热点阅读