ElasticSearch的TF-IDF打分原理

1,049 阅读2分钟

我们平时在百度搜索想要的东西的时候,往往会搜到很多结果,比如搜索ElasticSearch:

像这些搜索出来的有ElasticSearch关键字的文章或视频可能有几十篇几百篇,但是你展示的时候总得有个先后顺序,你总不能某一篇文章只出现了一次ElasticSearch关键词的排在前面,而某些出现了很多次ElasticSearc关键词的文章排在后面吧。基于这种需求,ElasticSearch为我们提供了TF-IDF打分规则来决定展示的结果顺序。

  那么什么是TF-IDF打分原理呢?

  TF: 表示的是词频,即一篇文章中包含了多少个我们要搜的关键词,关键词越多,代表与我们想要的结果越相关; 

  DF: 代表文档频率,表示的是包含关键词的文档的总数目;如果有100篇文章,每一篇文章ElasticSearch关键词都出现了,那么文档频率就是100%;

  IDF: DF取反;这个很好理解,TF代表某个关键词在一篇文档当中的区分度,而DF代表的是某个关键词在全部文档当中的区分度,DF取反之后与TF的乘积就代表打分规则,举个例子,如果ElasticSearch在一篇文档内的区分度很多并且在全部文档中出现的频次也很高,那么这个分数也越高;

举个例子算一下就很明了了:比如科比这个词在6篇文档中都出现了,所以DF=6;但在每一篇文章的词频不同,在每一篇文章中出现的次数分别为:3、2、7、9、1、2;根据这些数据就可以求出打分值来:


这样子TF/DF值越大,代表这篇文章就跟搜索的关键词越相关,应该排在前面被搜索到。