es(八)——相关性

每个文档都有相关性评分,用一个相对的浮点数字段 “ _score ” 来表示
_score 的评分越高,相关性越高。

查询语句会为每个文档添加一个 _score 字段。评分的计算方式取决于不同的查询类型 – 不同的查询语句用于不同的目
的: fuzzy 查询会计算与关键词的拼写相似程度, terms 查询会计算 找到的内容与关键词组成部分匹配的百分比,但是一般
意义上我们说的全文本搜索是指计算内容与关键词的类似程度。

ElasticSearch的相似度算法被定义为 TF/IDF,即检索词频率/反向文档频率,包括一下内容:

  • 检索词频率
    检索词在该字段出现的频率?出现频率越高,相关性也越高。
  • 反向文档频率
    每个检索词在索引中出现的频率?频率越高,相关性越低。
  • 字段长度准则
    字段的长度是多少?长度越长,相关性越低。

单个查询可以使用TF/IDF评分标准或其他方式,比如短语查询中检索词的距离或模糊查询里的检索词相似度。

相关性并不只是全文本检索的专利。也适用于 yes|no 的子句,匹配的子句越多,相关性评分越高。

如果多条查询子句被合并为一条复合查询语句,比如 bool 查询,则每个查询子句计算得出的评分会被合并到总的相关性评
分中。

理解评分标准

当调试一条复杂的查询语句时,想要理解相关性评分 _score 是比较困难的。ElasticSearch 在 每个查询语句中都有一个
explain参数,将 explain 设为 true 就可以得到更详细的信息。
在这里插入图片描述
增加一个 explain 参数会为每个匹配到的文档产生一大堆额外内容,

后返回值中的 _explanation 会包含在每一个入口,告诉你采用了哪种计算方式,并让你知道计算的结果以及其他详情:
在这里插入图片描述

重要: 输出 explain 结果代价是十分昂贵的,它只能用作调试工具 --千万不要用于生产环境。

第一部分是关于计算的总结。告诉了我们 “honeymoon” 在 tweet 字段中的检索词频率/反向文档频率或 TF/IDF, (这里的文
档 0 是一个内部的ID,跟我们没有关系,可以忽略。)

然后解释了计算的权重是如何计算出来的:

  • 检索词频率::
    在这里插入图片描述

  • 反向文档频率:
    在这里插入图片描述

  • 字段长度准则:

    在这里插入图片描述

提示: JSON形式的explain描述是难以阅读的 但是转成 YAML 会好很多,只需要在参数中加上 format=yaml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值