Elasticsearch高级搜索技术-自定义评分规则

devtools/2024/10/21 13:09:33/

目录

自定义评分规则

脚本得分 (Script Score)

函数得分 (Function Score)

示例详解

使用函数得分

原理详解

高斯衰减函数

得分模式 (Score Mode)

增强模式 (Boost Mode)

其他函数类型


自定义评分规则

脚本得分 (Script Score)

脚本得分允许你使用自定义的脚本来计算每个文档的得分。你可以编写一个 Painless 脚本(Elasticsearch 的默认脚本语言),根据文档中的字段值或其他条件来调整得分。

函数得分 (Function Score)

函数得分则提供了一种更结构化的方式来调整得分。它支持多种内置函数,如权重、衰减函数(高斯、线性、指数)、随机函数等。通过组合这些函数,可以实现复杂的评分逻辑。

示例详解

假设有一个图书库索引 library,其中包含书籍的信息,包括标题 (title) 和发布日期 (publish_date)。我们希望为那些发布日期较新的书籍增加权重。

使用函数得分
GET /library/_search
{"query": {"function_score": {"query": {"match": {"title": "love"}},"functions": [{"gauss": {"publish_date": {"origin": "now","scale": "30d","offset": "7d","decay": 0.5}}}],"score_mode": "multiply","boost_mode": "replace"}}
}

在这个例子中:

  • 查询部分:使用 match 查询查找标题中包含“love”的书籍。
  • 函数部分:使用 gauss 衰减函数来调整得分。
    • origin:衰减的中心点,这里设置为当前时间 now
    • scale:控制衰减的速度,这里是 30 天。
    • offset:将衰减曲线向后移动 7 天。
    • decay:当距离达到 scale 时,得分会衰减到初始值的 0.5 倍。
  • score_mode:多个函数得分的合并方式,这里设置为 multiply,即将各个函数得分相乘。
  • boost_mode:最终得分的处理方式,replace 表示用函数得分替换原始相关性得分。

原理详解

高斯衰减函数

高斯衰减函数是一种常用的平滑衰减方法。

得分模式 (Score Mode)
  • multiply:将所有函数得分与原始相关性得分相乘。
  • sum:将所有函数得分与原始相关性得分相加。
  • avg:取所有函数得分的平均值。
  • first:只使用第一个函数得分。
  • max:取所有函数得分的最大值。
  • min:取所有函数得分的最小值。
增强模式 (Boost Mode)
  • multiply:将函数得分与原始相关性得分相乘。
  • replace:用函数得分替换原始相关性得分。
  • sum:将函数得分与原始相关性得分相加。
  • avg:取函数得分与原始相关性得分的平均值。
  • max:取函数得分与原始相关性得分的最大值。
  • min:取函数得分与原始相关性得分的最小值。

其他函数类型

除了高斯衰减函数外,还有其他几种常见的函数类型:

  • 线性衰减 (Linear Decay):基于线性函数进行衰减。
  • 指数衰减 (Exponential Decay):基于指数函数进行衰减。
  • 权重 (Weight):为每个文档分配固定的权重。
  • 随机 (Random):为每个文档分配一个随机得分。
  • 脚本 (Script):使用自定义脚本来计算得分。

 


http://www.ppmy.cn/devtools/127571.html

相关文章

能用到“退休”的 600条 Linux 命令,可以解决日常99%的问题~

1、基本命令 uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件(SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作系统信息arch 显示机器的处理器架构uname -m 显示机器的处…

windows下安装、配置neo4j并服务化启动

第一步:下载Neo4j压缩包 官网下载地址:https://neo4j.com/download-center/ (官网下载真的非常慢,而且会自己中断,建议从以下链接下载) 百度网盘下载地址:链接:https://pan.baid…

信创:推动信息技术应用创新的国产化之路

文章目录 前言一、信创国产化改造的几个方面1. 操作系统&服务器2. 数据库3. 应用中间件4. 密评 二、适配改造1.操作系统&服务器2.数据库3. 应用中间件4. 密评 总结 前言 信创,即信息技术应用创新产业,这个词最早源自于2016年成立的“信创工委会…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十四集:制作新的场景以及制作创建切换管理系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作新的场景 1.重新翻新各种Sprite2.制作地图前期应该做的事情3.疯狂的制作地图二、制作场景切换管理系统 1.制作场景切换点TransitionPoint2.切换场景时的…

SpringBoot物流管理系统设计与实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

关于django这个python服务器的并发能力?

文章目录 1.并发方案1.1.django1.2.django nginx1.3.uwsgi nginx1.4.gunicorn nginx1.5.gunicorn nginx gevent 2.提高并发能力技巧3.总结 1.并发方案 1.1.django 毫无疑问,用原生django的server做处理的表现是最烂的,在10000次请求的情况下broke…

mysql学习教程,从入门到精通,SQL导入数据(43)

1、SQL导入数据 以下是一个关于如何使用SQL导入数据的详细指南。这通常涉及将数据从一个源文件(如CSV文件)导入到数据库表中。在这个例子中,我们将使用MySQL数据库和一个CSV文件作为数据源。 1.1、前提条件 MySQL数据库服务器已安装并运行…

鸿蒙网络编程系列29-RCP下载到文件和流示例

1. RCP下载功能简介 RCP模块是Harmony NEXT全新开发的HTTP数据请求能力接口,它为上传下载能力专门封装了几个方法,针对下载能力,主要是下载到文件的downloadToFile方法: downloadToFile(url: URLOrString, downloadTo: Download…