Elastic boosting的使用

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.mzph.cn/news/742951.shtml

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

相关文章

如何拆解技术瓶颈的难点

以大化小的思路 解决一个一个小问题从而解决最终问题 三段论: 抽象能力 职责领域划分 分层构建解决方案 案例:全局分布式事务的解决方案 抽象能力:全局分布式 是由一个个小的事务组合而成的,其中一个分布式事务出现问题&#xff…

亚马逊Bedrock引领生成式AI创新,Claude 3模型家族开启新时代

近日,亚马逊宣布其云计算平台亚马逊Bedrock已成为构建和扩展基于大型语言模型(LLM)和其他基础模型(FMs)的生成式AI应用的最佳平台。Anthropic公司开发的Claude模型家族,作为高性能FMs的代表,正在…

探索考古文字场景,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建文本考古场景下的甲骨文字符图像检测识别系统

甲骨文是一种非常历史悠久的古老文字,在前面我们基本上很少有涉及这块的内容,最近正好在做文字相关的项目开发研究,就想着基于甲骨文的场景来开发对应的检测识别系统,在前文中我们基于YOLOv5、YOLOv7和YOLOv9开发构建了在仿真数据…

激活函数Mish

paper:Mish: A Self Regularized Non-Monotonic Activation Function official implementation:https://github.com/digantamisra98/Mish 背景 在早期文献中,Sigmoid和TanH激活函数被广泛使用,随后在深度神经网络中失效。相比于…

Redis 创建群时报错 Node XXX is not empty

在创建 Redis 集群时报错[ERR] Node XXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 主要原因是 RDB 或者 AOF 文件中有数据,redis集群搭建的时候需要所有节点都为 空,不…

【组件初始化链条】简化Unity组件的初始化

简介 在游戏脚本中我们通过借助GetComponent或TryGetComponent方法获取组件,所以当需要获取较多组件时,我们不可避免地要书写一些重复代码,为了提升代码简洁程度,简化组件初始化逻辑,本文以"组件初始化链条"…

Springboot的配置文件及其优先级

配置文件 内置配置文件 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;SpringBoot使用一个全局的配置文件,配置文件名是固定的: application.propertiesapplication.yml 以上…

网络建设与运维培训介绍和能力介绍

1.开过的发票 3.培训获奖的证书 4合同签署 5.实训设备

利用 boost::asio::ssl C/C++ 检查SSL/PEM证书文件的有效性

我们可以通过 boost::asio::ssl::context (SSL上下文)对象实例成员接口来检查SSL证书文件的有效性。 1、use_certificate_chain_file 使用证书链文件(CA*) 2、use_certificate_file 使用证书文件(公钥&am…

[ThinkPHP]Arr返回1

$detailId (int)Arr::get($detail, null); var_dump($detailId); 打印结果:int(1) 原因: vendor/topthink/think-helper/src/helper/Arr.php

干洗店管理系统洗鞋店预约上门小程序洗护流程;

干洗店洗鞋店收银管理系统﹣智能线上预约洗衣店小程序软件; 闪站侠洗衣洗鞋店收银管理系统,一款集进销存、收衣、收银、会员管理等实用功能于一体的洗护管理软件,适用于各大中小型企业个体工商户,功能强大,操作简单&…

瑞_23种设计模式_命令模式

文章目录 1 命令模式(Command Pattern)1.1 介绍1.2 概述1.3 命令模式的结构1.4 命令模式的优缺点1.5 命令模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析(Runable) 🙊 前言…

【机器学习智能硬件开发全解】(二)—— 政安晨:嵌入式系统基本素养【处理器原理】

嵌入式系统的基本素养包括以下几个方面: 硬件知识:嵌入式系统通常由硬件和软件组成,了解和熟悉硬件的基本知识,包括微处理器、存储器、外设等,并了解它们的工作原理和特性。 软件编程:熟悉至少一种编程语言…

人工智能迷惑行为大赏——需求与科技的较量

目录 前言 一、 机器行为学 二、人工智能迷惑行为的现象 三、产生迷惑行为的技术原因 四、社会影响分析 五、解决措施 总结 前言 随着ChatGPT热度的攀升,越来越多的公司也相继推出了自己的AI大模型,如文心一言、通义千问等。各大应用也开始内置…

WPF图表库LiveCharts的使用

这个LiveCharts非常考究版本,它有非常多个版本,.net6对应的是LiveChart2 我这里的wpf项目是.net6,所以安装的是这三个,搜索的时候要将按钮“包括愈发行版”打勾 git:https://github.com/beto-rodriguez/LiveCharts2?…

webpack面试题

1、webpack是干什么的 Webpack是一个现代的JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图,此依赖图对应映射到项目所需的每个模块,然后将所有这些模块打包成一个或多个bundle。Webpack的主要功能…

趣学前端 | 平平无奇的JavaScript函数

背景 最近睡前习惯翻会书,重温了《JavaScript权威指南》。这本书,文字小,内容多。两年了,我才翻到第十章。因为书太厚,平时都充当电脑支架。 JavaScript函数 读这章之前,我感觉我三十年开发功力&#xf…

经典卷积神经网络LeNet-5、AlexNet、VGG-16

一、LeNet-5 这里只讲一下C5,卷积核大小是5*5,通道数是120,所以卷积完成之后是1*1*120,这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x161)x120 48120个参数,同样有48120个连接。 其他卷积层和池…

Maven: There are test failures.(已解决)

问题解决办法 进行package打包时报错如下: 然后这些并不能看出是测试的哪里的问题,可以点击上一级进行查看更详细的错误,越向上日志越详细,可以看到是52行出了错误, 52对应代码如下: 原因是存在注册的测…

HTML5+CSS3+JS小实例:全屏范围滑块

实例:全屏范围滑块 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale…