Elastic boosting的使用

news/2024/5/26 21:06:00/文章来源:https://blog.csdn.net/qq_29312279/article/details/136569584

boosting介绍

Boosting查询允许您降低与负面查询匹配的文档的相关性评分

boosting语法

GET /_search
{"query": {"boosting": {"positive": {"term": {"text": "apple"}},"negative": {"term": {"text": "pie tart fruit crumble tree"}},"negative_boost": 0.5}}
}
关键词语法介绍
positive这是主要要匹配的查询 ,只会展示positive 条件匹配的结果
negative这是要降低相关性分数的查询
negative_boost一个在0到1之间的值,用于降低与negative查询匹配的文档的相关性评分

查询流程

  1. 执行正向(Positive)查询 ElasticSearch首先执行正向查询,获取与之匹配的文档集合。这个查询是Boosting查询的主要部分。
  2. 执行反向(Negative)查询 然后,ElasticSearch执行反向查询,获取与之匹配的文档集合。这个查询是用来降低与之匹配文档的相关性分数。
  3. 计算相关性分数 对于每个文档,ElasticSearch计算其相对于正向查询的相关性分数。如果该文档也与反向查询匹配,则其分数会根据negative_boost的值进行降低。
  4. 如果一个文档只与正向查询匹配,则保留原始分数不变
  5. 如果一个文档既与正向查询又与反向查询匹配,则按new_score = old_score * negative_boost计算新的降低后的分数
  6. 排序返回结果 最后,ElasticSearch根据计算出的新相关性分数对匹配文档进行排序,并返回结果。

案例

场景

某电商网站,用户搜索"手机",我们希望对下面几种情况的商品评分分别进行调整:

  1. 如果是苹果手机,给予相对较高的权重
  2. 如果是较新的手机型号(2022年后上市),也给予较高权重
  3. 如果有"旗舰"、"Pro"等词,视为较高端机型而增加权重
  4. 如果是品牌为"X"的机型,则降低权重

索引创建

PUT /products
{"mappings": {"properties": {"name": {"type": "text"},"brand": {"type": "keyword"},"release_date": {"type": "date"}}}
}

文档插入

POST /_bulk
{"index":{"_index":"products"}}
{"name":"iPhone 14 Pro Max","brand":"Apple","release_date":"2022-09-15"}
{"index":{"_index":"products"}}
{"name":"小米12S Ultra","brand":"Xiaomi","release_date":"2022-07-04"}
{"index":{"_index":"products"}}
{"name":"华为Mate 50 Pro","brand":"Huawei","release_date":"2022-11-28"}
{"index":{"_index":"products"}}
{"name":"X品牌旗舰新机","brand":"X","release_date":"2021-06-01"}
{"index":{"_index":"products"}}
{"name":"三星Galaxy S23 Ultra","brand":"Samsung","release_date":"2023-02-17"}
{"index":{"_index":"products"}}
{"name":"魅族 Pro 7S","brand":"Meizu","release_date":"2020-05-28"}

查询语句

GET products/_search
{"query": {"boosting": {"positive": {"bool": {"should": [{"term": {"brand": {"value": "Apple"}}},{"range": {"release_date": {"gte": "2022-01-01"}}},{"regexp": {"name": ".*旗舰|Pro.*"}}]}},"negative": {"term": {"brand": {"value": "Xiaomi"}}},"negative_boost": 0.5}}
}

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

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

相关文章

力扣串题:字符串中的第一个唯一字母

映射做法&#xff1a;将字母转为数字之类的转化必须在运算中实现如-a int firstUniqChar(char * s){int a[26] {0};int len strlen(s);int i;for (i 0; i < len; i)a[s[i] - a];for (i 0; i < len; i) {if (a[s[i] - a] 1)return i;}return -1; }

第42期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

Python学习笔记-Flask实现简单的投票程序

1.导入flask包 from flask import Flask,jsonify,abort,make_response,request,render_template 2.初始化 Flask 应用: app Flask(__name__) 3. 定义投票种类 data [{id:0,name:劳动节,num:0},{id:1,name:国庆节,num:0},{id:2,name:春节,num:0} ] 4.app.route(/index): …

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS多路视频融合叠加应用本方案的SDI接收G…

全国降雨侵蚀力因子R值/土壤侵蚀模型RUSLE

降雨侵蚀力因子其实是反应降雨对土壤侵蚀的潜在能力&#xff0c;就是降雨的冲刷对土壤的侵蚀效应。 在过去几天查阅文献资料的过程中&#xff0c;本人亲眼看见过的关于因子R的计算方法就超过30种&#xff0c;着实大开了眼界。 不过总结这些计算方法&#xff0c;其实核心思路大…

【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法

【相关问题解答1】bert中文文本摘要代码 写在最前面问题1问题描述一些建议import时无法找到包时&#xff0c;几个潜在的原因和解决方法1. 模块或包的命名冲突解决方法&#xff1a; 2. 错误的导入路径解决方法&#xff1a; 3. 第三方库的使用错误解决方法&#xff1a; 4. 包未正…

最新CLion + STM32 + CubeMX 开发环境搭建

网上有不少相关教程&#xff0c;但都是基于老版本Clion&#xff0c;新版有一些改变&#xff0c;但整体是简单了。 PS&#xff1a;本教程基于CLion 2023.3.4 安装所需工具参考&#xff1a;Clion搭建stm32开发环境&#xff08;STM32F103C8T6&#xff09;&#xff0c;有这一篇就够…

Java Day9 Stream流

Stream流 1、认识2、Stream流使用步骤3、如何获取Stream流4.Stream流的中间方法5、 Stream流终结方法 1、认识 2、Stream流使用步骤 3、如何获取Stream流 //list获取stream流List<String> listnew ArrayList<>();Collections.addAll(list,"崔十一","…

【数据结构与算法】解题20240313

这里写目录标题 一、现场写一个代码&#xff0c;有两个字符串类型的数字&#xff0c;实现一个方法将它们进行相加&#xff0c;并返回相加后的数值。&#xff08;要考虑数据的长度问题&#xff09;一、287. 寻找重复数三、617. 合并二叉树 一、现场写一个代码&#xff0c;有两个…

第10集《天台教观纲宗》

请大家打开讲义第十七页。我们讲到己二、结申正义。 己二、结申正义 《法华经》把我们修行人修行的相貌&#xff0c;比喻作一个车乘。车乘就是一种交通工具&#xff0c;它能够让我们从此岸超越到彼岸去。所以修行它是可以超越的&#xff0c;你今天比昨天超越了&#xff0c;就好…

【C++从练气到飞升】03---构造函数和析构函数

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、类的6个默认成员函数 二、构造函数 1. 构造函数的概念 2. 构造函数的定义 3. 构造函数的特性 三、析构函…

opencv-python连通域分割connectedComponents

文章目录 连通域简介绘图代码函数说明 连通域简介 所谓连通域&#xff0c;即Connected Component&#xff0c;是一组彼此相连的像素点的集合&#xff0c;这些像素点彼此之间可以假设一条互相链接的路径&#xff0c;路径上所有像素的灰度一致&#xff0c;或者符合某个特定的条件…

Hackthebox - Scrambled- linux

Recon Port Scan HTTP 80 根据在 support 页面得到的信息&#xff1a; 邮箱 supportscramblecorp.com用户名 ksimpson一个用于连接 4411 端口的软件密码 ksimpson SMB 445 这里连接 SMB 服务是连不上的&#xff0c;因为禁用了 NTLM MSSQL 1443 SQL 服务也同样 Unkn…

MVCC原理

redo log 当没有redo log日志时 &#xff0c; 我们执行增删改语句之后会先更新Buffer Pool&#xff08;缓冲区&#xff09;&#xff0c;然后等待一定的数据后一起刷新回磁盘ibd&#xff0c;但是这个刷新过程中如果失败了&#xff0c;就会丢失数据&#xff0c;保证不了持久性 当…

编曲学习:钢琴编写 人性化、逻辑预制 工程音频导出

第8课 钢琴编写 人性化、逻辑预制 工程音频导出小鹅通-专注内容付费的技术服务商https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65e30339e4b064a8cfe56001?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 音乐创作中,有思路时可以不套学习到的公式,没有思路时可以套…

Kotlin 空类型,区间,数组

目录 1. 空类型 2. 区间 3. 数组 1. 空类型 我们知道任何一种数据类型都有为空或不为空两种状态&#xff0c;在 Kotlin 中&#xff0c;若允许一个数据为空&#xff0c;则需要使用 "?"&#xff0c;默认都不能为空。 代码举例说明 // 给 notNull赋值为空&#x…

Set cancelled by MemoryScratchSinkOperator

Bug信息 Caused by: com.starrocks.connector.spark.exception.StarrocksInternalException: StarRocks server StarRocks BE{host=10.9.14.39, port=9060} internal failed, status code [CANCELLED] error message is [Set cancelled by MemoryScratchSinkOperator]Bug产生的…

Qt 如何搭建Lua的运行环境

一、Lua简介 Lua 是一种强大的、高效的、轻量级的、可嵌入的脚本语言。它支持过程&#xff08;procedural&#xff09;编程、面向对象编程、函数式编程以及数据描述。Lua 是动态类型的&#xff0c;运行速度快&#xff0c;支持自动内存管理&#xff0c;因此被广泛用于配置、脚本…

手动更新服务器node新版本

1.安装nodejs下载到本地 2.下载后放到服务器上的指定目录中。例如/usr/local/src/node 3.执行tar -xvf node-v20.10.0-linux-x64.tar.xz解压 4.执行一下命令配置软连接 -f是如果文件存在就覆盖 # 将node源文件映射到usr/bin下的node文件 ln -fs /usr/local/src/node/node-…

Python使用lxml解析XML格式化数据

Python使用lxml解析XML格式化数据 1. 效果图2. 源代码参考 方法一&#xff1a;无脑读取文件&#xff0c;遇到有关键词的行再去解析获取值 方法二&#xff1a;利用lxml等库&#xff0c;解析格式化数据&#xff0c;批量获取标签及其值 这篇博客介绍第2种办法&#xff0c;以菜鸟教…