Elasticsearch核心技术与实战学习笔记 第四章 26 | 搜索的相关性算分

一 序

    本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。

二 相关性和相关性算分

搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结构进行算分_score
打分的本质是排序 , 需要把最符合用户需求的文档排在前面。ES 5 之前,默认的相关性打分采用 TF-IDF,现在采用 BM25     

2.1 词频  TF

Term Frequency :检查词在一篇文档里出现的频率

  • 检查词出现的次数除以文档的总字数

度量一条查询和结果文档县管辖的建档方法:简单讲搜索每一个词的 TF 进行相加

  • TF(区块链) + TF(的)+ TF(应用)

Stop Word

  • “的” 在文档中出现了很多次,但是对贡献相关度几乎没有用处,不应该考虑他们的 TF

2.2 逆文档频率 IDF

  DF:检索词在所有文档中出现的频率

  • “区块链” 在相对比较少的文档中出现
  • “应用” 在相对比较多的文档中出现
  • “Stop Word” 在大量的文档中出现

Inverse Document Frequency :简单说 = log(全部文档书 / 检索词出现过的文档总数)
TF-IDF 本质上就是将 TF 求和变成了加权求和

  • TF(区块链)* IDF(区块链) + TF(的)* IDF(的)+ TF(应用)* IDF(应用)

Lucene 中的 TF-IDF 评分公式

  

大致的了解,知道boosting对于算分的影响。

BM25

定制 Similarity

通过 Explain API 查看 TF-IDF

demo

数据准备,插入4条数据

PUT testscore/_bulk
{ "index": { "_id": 1 }}
{ "content":"we use Elasticsearch to power the search" }
{ "index": { "_id": 2 }}
{ "content":"we like elasticsearch" }
{ "index": { "_id": 3 }}
{ "content":"The scoring of documents is caculated by the scoring formula" }
{ "index": { "_id": 4 }}
{ "content":"you know, for search" }

查到2条,为什么2在1之前呢?

这两个文档的TF是一样的,但是文档2比文档1短,影响算分高。

打开explain:,可以看到相关算分的计算

Boosting Relevance

Boosting 是控制相关度的一种手段

  • 索引,字段或查询子条件

参数 boost 的含义

  • 当 boost > 1 时,打分的相关度相对性提高
  • 当 0 < boost < 1 时,打分的权重相对性降低
  • 当 boost < 0 时,贡献度负分

小结:

总体来说,属于了解原理性质。 

猜你喜欢

转载自blog.csdn.net/bohu83/article/details/106415903