当前位置: 首页 > news >正文

Elasticsearch打分机制

一 例子

xx搜索引擎,就搜索结果本身而言,xx返回了正确的结果。因为返回的结果中,都包含了搜索的关键字。而我们从逻辑上来看,这一堆广告算是咋回事!这个吐槽是从用户的角度出发的。很显然,返回的结果中,尤其是前几条,有时甚至是前几页,都跟我们想要的结果相差深远!
进一步说,仅仅以二元的方式来考虑文档和查询的匹配可能是有意义的,也就是百度搜索引擎返回了二元的匹配结果:是的,找到了 or 不,没找到!虽然返回了结果,其中也包含了我们想要的结果,即便你要在大堆的广告中找正确的结果实属不易,但就像大家都习惯了广告中插播电视剧一样,习惯就好嘛!xx从x的角度出发,为广告的词条增加权重,至于那个真正的结果…
而需要xx才能访问的xx浏览器,在正确的给用户返回二元结果之前,更多的考虑文档的相关性(relevancy),因为就某个结果而言,如果A文档要比B文档更和结果相关,那么A文档在结果中就要比B文档靠前,再加上以其他的优化,最终将所有结果返回,而用户最期待的那条结果很可能排在最高位,岂不美哉?
确定文档和查询有多么相关的过程被称为打分(scoring)

二 文档打分的运作机制:TF-IDF

Lucenees的打分机制是一个公式。将查询作为输入,使用不同的手段来确定每一篇文档的得分,将每一个因素最后通过公式综合起来,返回该文档的最终得分。这个综合考量的过程,就是我们希望相关的文档被优先返回的考量过程。在Lucenees中这种相关性称为得分。
在开始计算得分之前,es使用了被搜索词条的频率和它有多常见来影响得分,从两个方面理解:

  • 一个词条在某篇文档中出现的次数越多,该文档就越相关。
  • 一个词条如果在不同的文档中出现的次数越多,它就越不相关!

我们称之为TF-IDFTF是词频(term frequency),而IDF是逆文档频率(inverse document frequency)。

2.1 词频:TF

考虑一篇文档得分的首要方式,是查看一个词条在文档中出现的次数,比如某篇文章围绕es的打分展开的,那么文章中肯定会多次出现相关字眼,当查询时,我们认为该篇文档更符合,所以,这篇文档的得分会更高。
闲的蛋疼的可以Ctrl + f搜一下相关的关键词(es,得分、打分)之类的试试。

2.2 逆文档频率:IDF

相对于词频,逆文档频率稍显复杂,如果一个词条在索引中的不同文档中出现的次数越多,那么它就越不重要。
来个例子,示例地址:

The rules-which require employees to work from 9 am to 9 pm
In the weeks that followed the creation of 996.ICU in March
The 996.ICU page was soon blocked on multiple platforms including the messaging tool WeChat and the UC Browser.

假如es索引中,有上述3篇文档:

  • 词条ICU的文档频率是2,因为它出现在2篇文档中,文档的逆源自得分乘以1/DFDF是该词条的文档频率,这就意味着,由于ICU词条拥有更高的文档频率,所以,它的权重会降低。
  • 词条the的文档频率是3,它在3篇文档中都出现了,注意:尽管the在后两篇文档出都出现两次,但是它的词频是还是3,因为,逆文档词频只检查词条是否出现在某篇文档中,而不检查它在这篇文档中出现了多少次,那是词频该干的事儿

逆文档词频是一个重要的因素,用来平衡词条的词频。比如我们搜索the 996.ICU。单词the几乎出现在所有的文档中(中文中比如),如果这个鬼东西要不被均衡一下,那么the的频率将完全淹没996.ICU。所以,逆文档词频就有效的均衡了the这个常见词的相关性影响。以达到实际的相关性得分将会对查询的词条有一个更准确地描述。
当词频和逆文档词频计算完成。就可以使用TF-IDF公式来计算文档的得分了。

三 Lucene评分公式

之前的讨论Lucene默认评分公式被称为TF-IDF,一个基于词频和逆文档

http://www.lryc.cn/news/205265.html

相关文章:

  • 【pdf密码】为什么我的PDF文件不能复制文字?
  • vim程序编辑器
  • 新手如何学习挖漏洞?看这篇就够了【网络安全】
  • CentOS 7.8 kubeadm安装 k8s 1.26
  • 成都瀚网科技有限公司抖音小店:创新营销引领电商潮流
  • 警惕!又2本期刊被“On Hold”!
  • 一台服务器成了哆啦A梦的神奇口袋
  • java 关闭access文件资源后,无法删除文件
  • Typecho 添加 Emoji 表情报错「解决方案」
  • 【C#】委托与事件
  • 化工园区数字孪生可视化管控平台,赋予园区安全环保智慧发展
  • Laplacian算子详解及例程
  • 《数据结构与算法》学习指导手册
  • ubuntu安装配置mantis
  • node后端接收pdf接口
  • [RPC] Motan快速开始
  • 仿美团外卖微信小程序源码/美团外卖优惠券领劵小程序-自带流量主模式
  • 【Python】Windows跟随程序启动和关闭系统代理
  • 信钰证券:华为汽车概念股持续活跃 圣龙股份斩获12连板
  • LSM Tree 深度解析
  • BurpSuite安装
  • VB.NET 三层登录系统实战:从设计到部署全流程详解
  • 【前端性能】性能优化手段-高频面试题
  • cleanmymacX4.14免费版mac清除浏览器缓存软件
  • 分享个包含各省、市、区的编码数据的在线静态资源脚本
  • Elasticsearch聚合----aggregations的简单使用
  • GOPS·2023上海站 | 提前剧透!阿里、腾讯、字节、擎创等专家齐聚上海,共话互联网运维
  • 防关联浏览器推荐:MuLogin指纹浏览器安全登录多平台账号
  • 部署SeaTunnel单节点Standalone 模式环境
  • 二十三、设计模式之组合模式![