ES系列--打分机制

 一、文档打分机制

当你通过关键字搜索相关文档时,可能会出现多个文档,这些文档的顺序是通过一个max_score属性的大小从高到低顺序展现出来的,max_score属性就是我们所说的评分。而这个评分是通过一个文档打分机制计算出来的。

二、打分原理

一、总公式

max_score = boost  *  idf  *  tf

 其中,查询权重可以自己定义。

 二、IDF与TF的计算

可以使用

GET /index/_search?explain=true

{

"query": {

           "match": {

                 "text(这个是查询字段)": "hello"(这个是词条

                         }

                }

}

一、计算TF (词频)

Term Frequency : 搜索文本中的各个词条(term)在查询文本中出现了多少次, 出现次数越多,就越相关,得分会比较高

 TF = freq / ( freq + k1 * ( 1 - b + b * dl / avgdl ))

freq:搜索的关键词在文档中出现的次数。

avgdl = fields / documents:

fields : 查询出来的所有文档的分解字段数量

documents:查询文档数量

dl:搜索的关键词再当前文档中分解的长度

二、 计算IDF(逆文档频率)

Inverse Document Frequency : 搜索文本中的各个词条(term)在整个索引的所有文档中 出现了多少次,出现的次数越多,说明越不重要,也就越不相关,得分就比较低。

 log ( 1 + ( N - n + 0.5) / ( n + 0.5 ))

N:这个只是查询字段

n:文档中词条,也即查询的关键词的数量

注:这里的 log 是底数为 e 的对数 

 三、查询权重

我们可以通过控制查询权重来控制文档结果展现的顺序性。

GET /testscore/_search?explain=true

{
    "query": {
        "bool": {
            "should": [{
                    "match": {
                        "title": {
                            "query": "Hadoop",
                            "boost": 1
                        }
                    }
                },
                {
                    "match": {
                        "title": {
                            "query": "Hive",
                            "boost": 1
                        }
                    }
                },
                {
                    "match": {
                        "title": {
                            "query": "Spark",
                            "boost": 2  // 通过查询权重来控制结果的顺序性
                        }
                    }
                }
            ]
        }
    }
}

结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29346.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL操作库

MySQL操作库 一.创建数据库1. 创建数据库的方式2. 创建数据库时的编码问题3. 指定编码创建数据库4. 验证校验规则对数据库的影响 二.数据库与文件系统的关系三.操纵数据库1. 查看数据库2. 删除数据库3. 修改数据库 四.数据库的备份和恢复1.数据库的备份2.数据库的恢复 五.查看连…

计算机vcruntime140.dll丢失的解决方法,重新安装教程

vcruntime140.dll是Microsoft Visual C Redistributable文件中的一个动态链接库(DLL)。这个文件是由Microsoft开发的,用于支持C编程语言的运行环境。vcruntime140.dll是Windows系统非常重要的文件,通常会被一些应用程序或游戏所需…

Docker 安装 Nginx,并实现负载均衡

1、获取 nginx 的镜像 # 默认是latest版本docker pull nginx 2、运行 nginx 容器 docker run --name nginx-80 -p 80:80 --rm -d nginx# --name nginx-80 设定容器的名称# -p 80:80 端口进行映射,将本地的80端口映射到容器内部的80端口# --rm 表示容器退出后直接…

python_day11_practice

将文本数据插入数据库 两文本文件为day10面向对象练习案例 将data_define.py文件复制过来(导入失败,疑惑) 新建数据库,建表orders -- CREATE DATABASE py_sql charset utf8;use py_sql;create table orders(order_date date,…

After Effects CPU 和 RAM 使用率高,如何修复?

如果您发现 Adob​​e After Effects 的 CPU 和 RAM 使用率较高,可以按照以下方法解决该问题。 1]确保您的系统满足最低系统要求 要在您的 PC 上运行 Adob​​e After Effects,您的 PC 需要满足最低系统要求。只有这样,该程序才会停止消耗更…

怎么将拼接的字符串element组件通过“v-html“渲染到页面

如上图所示&#xff0c;没那么多废话&#xff0c;直接上代码 html中 <div id"app"><div :html"tempHtml"></div> </div>vue中 new Vue({el: #app,data() {return {tempHtml: }},created() {this.getHtml()},mounted() {window.…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

【ceph】存储池pg个数如何设置

存储池pg个数如何设置 参考官方文档说明&#xff1a;https://old.ceph.com/pgcalc/参数说明TargePGs per OSD&#xff1a;每个OSD的pg数OSD#存储池包含osd个数%Data存储池写入数据占总OSD容量百分比Size存储池冗余数

安达发|高级计划与智能排程APS软件的发展史进程

从泰勒的科学管理理论出发&#xff0c;率先追求科学的管理理论和管理工具&#xff0c;在计算机成为企业日常管理的基本工具之后&#xff0c;信息系统已经成为提高工厂管理水平的重要支柱。 在工厂计划领域&#xff0c;开始了从MRP到MRPII再到ERP的演变过程。MRPII指的是制造…

微服务——技术栈+概念+远程调用案例

目录 微服务技术栈 认识微服务 微服务架构演变 总结 微服务技术对比 SpringCloud springcloud和springboot的对应版本 ​编辑 服务拆分 注意事项 入门案例 远程调用 步骤一 :注册ResTemplate 步骤二&#xff1a;修改service层代码 微服务技术栈 将一个大的项目拆分出…

RabbitMQ消息堆积问题及惰性队列

一&#xff0c;消息堆积 1&#xff0c;消费者堆积问题 当生产者生产消息的速度超过了消费者处理消息的速度&#xff0c;就会导致消息在队列中进行堆积&#xff0c;一定时间后会造成队列达到存储的上限&#xff0c;那么最开始进入队列的消息可能变成死信&#xff0c;会被丢弃&…