Elasticsearch分数计算算法

Elasticsearch分数计算算法教程

Elasticsearch 的分数计算算法主要涉及到 relevance score 算法和 Term frequency 算法。relevance score 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度。

Term frequency 算法就是搜索文本中的各个词条在 field 文本中出现了多少次,出现次数越多,就越相关。Elasticsearch 使用的是 term frequency/inverse document frequency 算法,简称为 TF/IDF 算法。

Elasticsearch分数计算算法详解

分析一

比如我们需要搜索 hello world,并且现在有如下两个文档:

doc1:hello you, and world is very good doc2:hello, how are you

那么 Inverse document frequency 算法就是搜索文本中的各个词条在整个索引的所有文档中出现了多少次,出现的次数越多,就越不相关。

分析二

比如我们需要搜索 hello world,并且现在有如下两个文档:

doc1:hello, today is very good doc2:hi world, how are you

比如说,在 index 中有 1 万条 document,hello 这个单词在所有的 document 中,一共出现了 1000 次;world 这个单词在所有的 document 中,一共出现了 100 次,那么 doc2 更相关。

Field-length norm

也就是 field 长度,field 越长,相关度越弱,比如我们需要搜索 hello world,并且现在有如下两个文档:

doc1:{ "title": "hello article", "content": "babaaba 1万个单词" } doc2:{ "title": "my article", "content": "blablabala 1万个单词,hi world" }

hello world 在整个 index 中出现的次数是一样多的,那么 doc1 更相关,因为 title field 更短。

Elasticsearch分数计算算法教程

Elasticsearch 的分数计算算法主要涉及到 relevance score 算法和 Term frequency 算法。relevance score 算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度。

Term frequency 算法就是搜索文本中的各个词条在 field 文本中出现了多少次,出现次数越多,就越相关。Elasticsearch 使用的是 term frequency/inverse document frequency 算法,简称为 TF/IDF 算法。