Elasticsearch _score评分介绍
默认情况下,Elasticsearch返回结果是按相关性倒序排列的。而理想的排序是和查询条件相关性越高排序越靠前,但是,什么是相关性? 相关性如何计算?
什么是相关性?
每个文档都有相关性评分,用一个正浮点数字段 _score 来表示 。 _score 的评分越高,相关性越高。
相关性如何计算?
查询语句会为每个文档生成一个 _score 字段。评分的计算方式取决于查询类型,不同的查询语句用于不同的目的:fuzzy 查询会计算与关键词的拼写相似程度,terms 查询会计算找到的内容与关键词组成部分匹配的百分比,但是通常我们说的 relevance 是我们用来计算全文本字段的值相对于全文本检索词相似程度的算法。
Elasticsearch 的相似度算法被定义为检索词频率/反向文档频率,即TF/IDF ,包括以下内容:
检索词频率
检索词在字段出现的频率。出现频率越高,相关性也越高。 字段中出现过 5 次要比只出现过 1 次的相关性高。
反向文档频率
每个检索词在索引中出现的频率。频率越高,相关性越低。检索词出现在多数文档中会比出现在少数文档中的权重更低。
字段长度准则
字段的长度是多少。长度越长,相关性越低。 检索词出现在一个短的 title 要比同样的词出现在一个长的 body 字段权重更大。