55.TF/IDF算法

时间:2023-11-10 22:48:50

主要知识点:

  • TF/IDF算法介绍
  • 查看es计算_source的过程及各词条的分数
  • 查看一个document是如何被匹配到的

 
 

 
 

一、算法介绍

relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度。Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法

 
 

1、Term frequency

搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关

示例

搜索请求:hello world

doc1:hello you, and world is very good

doc2:hello, how are you

doc1比doc2更相关

 
 

2、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比doc1更相关

 
 

 
 

3、Field-length norm

field越长,相关度越弱

 
 

搜索请求:hello world

 
 

doc1:{ "title": "hello article", "content": "babaaba 1万个单词" }

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

 
 

hello world在整个index中出现的次数是一样多的,但是word是在一万个单词中才出现的,所以doc1更相关,title field更短

 
 

二、查看_score是如何被计算出来的

 
 

GET /test_index/test_type/_search?explain

{

"query": {

"match": {

"test_field": "test hello"

}

}

}

 
 

三、查看一个document是如何被匹配到的

 
 

GET /test_index/test_type/6/_explain

{

"query": {

"match": {

"test_field": "test hello"

}

}

}

 
 

四、延伸阅读

百度百科