ElasticSearch复合查寻

ops/2024/12/22 11:18:03/

        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/ops/23975.html

相关文章

基于Transformer Models模型完成学习训练模型

在编程之前需要准备一些文件: 首先,先winR打开运行框,输入:PowerShell后 输入: pip install -U huggingface_hub 下载完成后,指定我们的环境变量: $env:HF_ENDPOINT "https://hf-mir…

6UVPX龙芯3A3000+国产显卡,VPX 3U 龙芯2K主板,龙芯3A3000 VPX 3U主板

6UVPX龙芯3A3000国产显卡 ■ 7A1000芯片组 ■ 16GB内存(国外)8GB内存(国内) ■ 凌久GP101独立显卡,1路VGA2路DVI输出 ■ 存储:板载电子盘容量256GB ■ 4路USB2.0接口; ■ 4路千兆网接口&a…

请解释什么是PDO,以及它相对于MySQLi的优势是什么?

请解释什么是PDO,以及它相对于MySQLi的优势是什么? PDO,即PHP Data Object,是一个数据库访问层,为PHP访问数据库定义了一个轻量级的、一致性的接口。无论使用哪种数据库,都可以通过一致的函数(…

Java 设计模式(上)

目录 一、单一职责原则 二、开闭原则 三、里氏替换原则 四、迪米特法则 五、接口隔离原则 六、依赖倒置原则 七、工厂方法 八、抽象工厂 九、建造者模式 十、原型模式 十一、单例模式 十二、适配器模式 一、单一职责原则 单一职责原则又称单一功能原则,…

React Router v5 版本中,路由传参主要方式

在 React Router v5 版本中,路由传参主要有以下几种方式: 1. 动态路由参数(:param) 通过在路由路径中使用 : 后跟参数名的形式,可以捕获特定部分的 URL 路径作为参数传递给目标组件。在目标组件中,可以使…

基于EBAZ4205矿板的图像处理:02生成测试彩条图像

基于EBAZ4205矿板的图像处理:02生成测试彩条图像 生成测试彩条图像可以有两种方式 VDMA缓存PS端生成彩条图像数据,PL端输出 这里可以直接看超级大电工开源的代码,写的很好详细,我就不再班门弄斧了(下面是链接&#…

个人免费安装iOS微信多开的方法(微信版本8.0.48)

摘要 因为iOS系统的限制问题,导致安装多开的难度、成本越来越高!因为iOS系统安装软件的正规渠道一般都是从App Store的,毕竟上架到App Store的软件都是正规、安全、受管控的软件,苹果也是为了安全考虑。 那么,除了从…

elementui el-date-picker禁止选择今年、今天、之前、时间范围限制18个月

1、禁止选择今年之前的所有年份 <el-date-pickerv-if"tabsActive 0":clearable"false"v-model"yearValue"change"yearTimeChange"type"year"placeholder"选择年"value-format"yyyy":picker-options…