ES入门五:组合查询

带有组合功能的Api有以下几个:

  • Bool Query:布尔查询,可以组合多个过滤语句来过滤文档
  • Boosting Query:在postive块中指定匹配文档的语句,同时降低在negative块中也匹配的文档的得分,提供调整相关性算法的能力
  • constant_score Query:包装了一个过滤器查询,不进行算分
  • dis_max Query:返回匹配了一个或者多个查询语句的文档,但只将最佳匹配的评分作为相关性算法返回
  • function_score Query:支持使用函数来修改查询返回的分数

Bool Query

如其名,Bool Query使用1个或者多个布尔查询子句进行构建,每个子句都有一个类型,这些类型如下:

  • must:查询的内容必须在匹配的文档中出现,并且会进行相关性算法。简单来说就是与AND等价
  • filter:查询的内容必须在匹配的内容中出现,但不想must,filter的相关性算法是会被忽略的。因为其子句会在filter context中执行,所以其相关性算法会被忽略,并且子句将被考虑用作缓存**,简单来说就是与AND等价**
  • should:查询的内容应该在匹配的文档中出现,可以指定最小匹配的数量。简单来说**,就是与OR等价**
  • must_not:查询的内容不能在匹配的文档中出现。与filter一样其相关性算法会被忽略,简单来说与NOT 等价

#### 需求一:must多条件查询(作者和出版日期) ![image.png](https://img-blog.csdnimg.cn/img_convert/a8557000957942bf73472abb3b8dcf10.png)
返回结果:
![image.png](https://img-blog.csdnimg.cn/img_convert/1f97c91bda03ea2f25e4019cd010606b.png)

需求二:should多条件查询(作者和日期)

image.png
返回结果:
image.png
当我们将这个minimum_should_match设置为1的时候,表示最小匹配子句查询为1的时候,看看返回结果是什么样:
image.png

需求三:must+filter查询(作者和日期)

image.png
返回结果:
image.png
可以明显的看出花费时间是不一样的

Boosting Query

Boosting Query可以指定两个块:positive块和negative块。可以在postive块指定匹配文档的语句,而在negative块中匹配的文档相关性算法会降低。相关性算法降低的程度将由negative_boost参数决定,其取值范围:【0,0, 1.0】
image.png
返回结果:
image.png
上面我们像查询书名中含有“linux”的文档,并且想让含有“programming”字样的文档的相关性降低一半。在negative块中匹配的文档,其相关性算分为:在postive中匹配是的算分* negative_boost

constant_score Query

这个之前已经讲过了,其包装了一个过滤器查询,不进行算分。使用Constant Score可以将query转换为filter,可以忽略相关性算法的环节,并且filter可以有效利用缓存,从而提高查询的性能
image.png

dis_max Query

disjunction max Query简称为dis_max, 就是分离最大化查询的意思。注意这个名字中的两个点:分离、最大化

  • disjunction(分离)的含义是:表示把同一个文档中的每个字段上的查询都分开,分吧进行算法操作
  • max(最大化):是将多个字段查询的得分的最大值作为最终评分返回

将每个条件分开执行,最终返回最佳匹配的得分作为查询的算法结构返回

image.png
返回结果:
image.png
如上示例,我们在查询书名中出现“linux”或者书本简介中出现“kernel“的文档,而最终返回的相关性评分将以匹配“linux”或者匹配“kernel”中最大的那个评分为准

这里出现了tie_breaker, 我们再学习一下,当指定“tie_breaker”的时候,算法结果将按照下面的方式执行:

  1. 令算分最高的字段得分为s1
  • 令其他匹配的字段的算分 * tie_breaker的和为s2
  1. 最终得分为:s1+s2

“tie_breaker” 的取值范围为:[0.0, 1.0]。当其为 0.0 的时候,按照上述公式来计算,表示使用最佳匹配字段的得分作为相关性算分。当其为 1.0 的时候,表示所有字段的得分同等重要。当其在 0.0 到 1.0 之间的时候,代表其他字段的得分也需要参与到总得分的计算当中去。通俗来说就是其他字段可以使用 “tie_breaker” 来进行“调整权重”

function_score Query

function_score Query允许你在查询结束以后去修改每一个匹配文档的相关性算法,所以使用算分函数可以改变或者替换原来的相关性算分结果

function_score Query提供一下几个算分函数:

  • script_score:利用自定义的脚本完全控制算分逻辑
  • weight:为每一个文档设置一个简单并且不会被规范化的权重
  • random_score: 为每个用户提供一个不同的随机算分,对结果进行排序
  • field_value_factor:使用文档字段的值来影响算分,例如将好评数量作为这个字段考虑因素
  • decay functions: 衰减函数,以某个字段的值为标准,距离指定值越近,算分越高。例如我想要让书本价格越接近10元,算分越高排序越靠前

field_value_factor

field_value_factor的作用是用文档某个字段的值来影响相关性算分,其可以解决这样的需求:价格优惠的优先推荐,点赞数多的优点推荐、购买量多的优先推荐等

field_value_factor提供了以下几个参数选项:

  • field:文档的字段
  • factor:指定文档的值会乘以这个因子,默认为1
  • modifier:修改最终值的函数,其值可以为:none、log、log1p、log2p、ln、ln1p、ln2p、square、 sqrt、reciprocal,默认为 none。

看看下面这个示例:我想让书本的价格增加,相关性算法相应的降低:
image.png

返回结果:
image.png

算分过程

  1. 价格 x factor(1.2)
  2. 使用reciprocal,类似于 1/x,这里就是 1/(价格 x factor(1.2))
  3. 再使用boost_mode:也就是新分 = 旧分 * 1/(价格 x factor(1.2))

对于boost_mode,它有以下几种:

  • multiply: 算分与函数值的积
  • replace:使用函数值作为最终的结果
  • sum:算分与函数值的和
  • avg:算分与函数值的评分值
  • min:算分与函数值的最小值
  • max:算分与函数值的最大值
random_score

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

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

相关文章

代码随想录 回溯算法-排序

目录 46.全排序 47.全排列|| 332.重新安排行程 46.全排序 46. 全排列 中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,…

蓝桥杯每日一题:烤鸡dfs

这道题考察了dfs的应用,题干十分有趣,思考过程对以后类似题目也有很强的参考性,一起来学习吧! 题目: # 烤鸡 ## 题目背景 猪猪 Hanke 得到了一只鸡。 ## 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜…

蓝桥杯练习题——归并排序

1.火柴排队 思路 1.求最小值的时候,可以直接按升序排序,这样得到的值就是最小值 2.求最小交换次数的时候,不能直接排序,因为只能交换相邻的数,只需要知道他们的相对大小,所以可以先用离散化,把…

清华大学1748页CTF竞赛入门指南,完整版开放下载!

CTF是一种针对信息安全领域的经济性挑战,旨在通过解决一系列的难题来寻找隐藏的“flag”。CTF比赛战队一般是以高校、科研单位、企业、信息安全从业者或社会团体组成。对于网安爱好者及从业者来说,拥有“CTF参赛经验”也是求职中的加分项。 前几天分享的…

什么是智慧公厕?智慧公厕设备有哪些

在现代社会,公共厕所作为城市基础设施的重要一环,承载着城市卫生、居民生活品质的重要责任。然而,传统公厕存在的问题仍然不可忽视:脏乱差、资源浪费、安全隐患等等。 为了解决这些问题,针对公共厕所日常使用、运营管…

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题,提出了一种特殊的RNN模型——长短期记忆网络(Long Short-Term Memory networks, LSTM),能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

ORA/GSA -- 学习记录

brief over-representation analysis(ORA),过表“达”分析,就是我们做多分组的RNAseq数据解析后会得到一些差异表达的gene,有些时候是单独拿出一个差异gene去解释表型,缺点是欠缺证据力度。有些人就把一些相关的差异gene放在一块儿解释&…

网络编程---网络编程入门、UDP通信程序、TCP通信程序

1.网络编程入门 1.网络编程概述 网络编程: 在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据传输 计算机网络: 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来&#…

J1周-ResNet-50算法

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、问题引出 CNN能够提取低、中、…

qnx启动中控屏黑屏

bmetrics_service boot metrics service, 用于记录统计启动性能信息,读取/dev/bmetrics可以获取到这些信息 # use memorydump memorydump Sets the debug cookies, copies MMU info into reset_info asinfo, sets the secure monitor(TZ) dump buffer, starts tracelogger Usa…

VR全景技术在VR看房中有哪些应用,能带来哪些好处

引言: 随着科技的不断发展,虚拟现实(VR)技术在房地产行业中的应用也越来越广泛。其中,VR全景技术在VR看房中的运用尤为突出。今天,让我们一起深入探讨VR全景技术在VR看房中的应用及其带来的种种好处。 一、…

ES入门二:文档的基本操作

索引管理 创建索引 删除索引 文档管理 创建文档 如果有更新需求,使用第一种如果有唯一性校验,使用第二种如果需要系统给你创建文档Id,使用第三种 (这个性能更好) 相比第一种,第三种的写入效率更高&#xf…

基础GamePlay知识-碰撞检测

将会持续更新gameplay的一些基础知识,一同学习。 扇形检测 扇形检测是Gameplay里面很常见的场景。比如荒野乱斗中,大部分的近战角色都是扇形攻击。在扇形范围内就认为是受击。 扇形检测只有两个参数,一个是扇形的角度一个是扇形的半径大小。…

直播预告|小白开箱: 云数据库在五朵云上的评测

3 月 7 日,周四晚上 19:00-20:30 由明说三人行组织,邀请了 NineData 国际总经理(GM) Ni Demai、云猿生数据 CTO & 联合创始人子嘉,和《明说三人行》创始人 &主持人明叔,共同围绕《小白开箱: 云数据库在五朵云上的评…

官网正在被哪些产品蚕食,定制网站又被哪些建站产品挤占。

2023-12-09 16:22贝格前端工场 官网建设是一个被大多数人看衰的市场,本文来理性分析下,谁在蚕食这个市场,谁又在挤占这个产品生存空间,欢迎大家评论,探讨。 网站正在被以下产品形式取代: 1. 移动应用&…

揭秘Web缓存:提升网站性能与用户体验

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

金融数据采集与风险管理:Open-Spider工具的应用与实践

一、项目介绍 在当今快速发展的金融行业中,新的金融产品和服务层出不穷,为银行业务带来了巨大的机遇和挑战。为了帮助银行员工更好地应对这些挑战,我们曾成功实施了一个创新的项目,该项目采用了先进的爬虫技术,通过ope…

七彩虹@电脑cpu频率上不去问题@控制中心性能模式cpu频率上不去@代理服务器超时@账户同步设置失败

文章目录 windows电脑cpu频率上不去新电脑的系统时间问题系统时间不准造成的具体问题举例代理超时vscode同步请求失败自动校准时间 windows电脑cpu频率上不去 问题描述,标压处理器的笔记本,cpu频率上不去 如果cpu没问题的话,就应该是系统限制了功耗导致的有的笔记本有控制中心…

动手学深度学习PyTorch版

基本的数据操作 import torch # 创建一个行向量,默认为从0开始的12个整数 # n维数组也称为张量 x torch.arange(12) x # 张量的形状 x.shape# 张量的大小,张量所有元素的个数 x.numel()#修改张量的形状 x x.reshape(3,4)#生成形状为3*4的两个向量,向…

深度学习与人类的智能交互:迈向自然与高效的人机新纪元

引言 随着科技的飞速发展,深度学习作为人工智能领域的一颗璀璨明珠,正日益展现出其在模拟人类认知和感知过程中的强大能力。本文旨在探讨深度学习如何日益逼近人类智能的边界,并通过模拟人类的感知系统,使机器能更深入地理解和解…