ElasticSearch复合查寻

embedded/2024/11/8 23:07:58/

        FunctionScore主要是在原始查询的基础上去修改一下算分的。

        而BooleanQuery布尔查询,它不会去修改算分,而是把多个查询语句组合在一起形成新查询。这些被组合的查询语句,我们都称之为叫子查询了,这些子查询,它的组合方式有下面四种,分别是:

                        

        ·Must:必须、必须成立,必须匹配  比如说你有两到三个字查询,每个都要成立

        ·should 选择性匹配。比方说你有两个或三个子查询,只要任意匹配一个就行了

        ·must_not 相反,不能成立

        ·filter,从字面来看,它也是必须匹配,Must也是必须匹配,确实它俩都是必须匹配,都是”与”的意思。

         must not和filter不参与算分

         must not和filter不参与算分它们在做搜索过滤时不参与算分。大家都知道ES在做搜索的时候,它不仅仅是判断你这个文档是否匹配,它还要看你这个文档跟关键字之间的相关度,给你打个分儿,分最高要靠前,这个打分我们有非常复杂的一个算分函数BM25;因此每做一次算分,其实是会消耗一些资源的。如果子查询比较多,每一个都参与算分,是不是查询性能就会受到影响,而如果你在使用的时候,你用的是filter查询和must not查询,它们是不参与算分的。

        虽然BooleanQuery复合查询里面有这么四种组合关系,但是除了跟算分相关的,一般就是关键字:用户输入的个关键字,除了用户输入的个关键字以外,剩下的过滤条件都应该放在must_not 或者filter里边,尽可能的减少算分,提高查询的效率。

        用户输入的关键字,其实你可以放到Must里,因为他要参与算分,

        但是下边这些过滤条件品牌也好,价格也,最好放到 must not或者filter当中。因为放到must_not或者filter里,不存算分,性能更好:

举例子: 

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ must not和filter不参与算分:

放到must里面:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         

must参与算分,现在我的must里边就有两个条件了,我们来再运行一次,结果依然是三条。同样还是刚才的这几个,但是让大家看算分是不是变了,变成二点多分了,刚才是不是一点几分

如果说你再把must_not也加进去,算分还是会受影响:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 所以放到must里面的,或者是should里面的,都会影响算分,都会参与算分。

参与算分的条件越多,性能就会越差,所以这些过滤条件大家一定要根据你自己的需求看是应该放在哪里合适


http://www.ppmy.cn/embedded/23871.html

相关文章

安卓手机APP开发__媒体开发部分__APK裁剪

安卓手机APP开发__媒体开发部分__APK裁剪 目录 概述 仅使用必要的依赖 启用代码和资源的裁剪 指定你的APP需要哪一个渲染器 指定你的APP需要哪个抽取器 定制媒体源的实例化 概述 最小化APK的大小是开发一个好的安卓APP的一个重要的方面.当面向的是正在开发 的市场时更是…

[XR806开发板试用] XR806 调用cjson 实现数据序列化

很荣幸获得极术设区提供的这次试用机会,可以接触鸿蒙操作系统。我工作接触最多的是linux 平台的嵌入式ARM平台较多,这次跑了下鸿蒙,也非常有趣。 不过接进年底了,日常大小琐碎事情突然多了起来,测评的比较匆忙&#x…

MySQL Binlog 闪回与分析

文章目录 前言1. 修改 event 实现闪回1.1 binlog 结构1.2 闪回案例1.3 方法总结 2. 解析文本闪回2.1 mysqlbinlog2.2 闪回案例2.3 方法总结 3. 在线订阅闪回3.1 mysql-replication3.2 binlog2sql3.3 方法总结 4. Binlog 分析方法4.1 分析场景4.2 辅助定位事务4.3 方法总结 5. 平…

连锁企业如何通过OceanBase解决数据库瓶颈

本文来自OceanBase客户,重庆三十七度健康管理有限公司的技术负责人Rinvay的分享 背景 足疗养生对于大家来说应该并不陌生,自古以来便有多部古籍记载。尽管现代生活中,人们可能不再严格遵循节气进行泡脚,但在忙碌的工作间隙&#…

AJAX——案例_天气预报

天气预报案例 步骤 获取北京市天气数据,展示搜索城市列表,展示点击城市,显示对应天气数据 index.css代码 html, body {height: 100%; }body {background-image: linear-gradient(135deg, #50B1FF 0%, #1F57D6 100%); }.container {width: 12…

web(微博发布案例)

示例&#xff1a; 1、检测空白内容 2、发布内容 html: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta …

深度学习 --- stanford cs231学习笔记(一)

stanford cs231学习笔记(一) 1&#xff0c;先是讲到了机器学习中的kNN算法&#xff0c;然后因为kNN分类器的一些弊端&#xff0c;引入了线性分类器。 kNN算法的三大弊端&#xff1a; (1)&#xff0c;计算量大&#xff0c;当特征比较多时表示性差 (2)&#xff0c;训练时耗时少…

软件物料清单(SBOM)生成指南 .pdf

如今软件安全攻击技术手段不断升级&#xff0c;攻击数量显著增长。尤其是针对软件供应链的安全攻击&#xff0c;具有高隐秘性、追溯难的特点&#xff0c;对企业软件安全威胁极大。 同时&#xff0c;软件本身也在不断地更新迭代&#xff0c;软件内部成分安全性在持续变化浮动。…