【Elasticsearch】function_score与rescore

它们俩都是用来“**干涉评分**”的,但**工作阶段不同、性能开销不同、能做的事也不同**。一句话总结:

> **function_score** 在 **第一次算分** 时就动手脚;  
> **rescore** 在 **拿到 Top-N 结果后** 再“重新打分”。

下面把“能干嘛”拆开讲。

──────────────────  
1. function_score(查询阶段就改分)

• 时机:每个分片在 **收集命中文档时** 直接算完最终得分;属于 **query 阶段**。  
• 性能:对 **全部命中文档** 都生效,数据量大时成本最高。  
• 典型用途  
- 按业务权重提升/降低:新品×1.5、广告×0.8  
- 把“销量”“点击率”等数值字段线性/对数地融进分数  
- 地理位置衰减:离用户越近分数越高  
- 随机打散:给每个用户返回略有不同的排序  
- 脚本写复杂规则:if-else、正则、调用外部服务(不推荐高并发)

──────────────────  
2. rescore(先粗排,再精排)

• 时机:各分片先用原始查询拿到 **window 内的 Top-K**(默认 10×page_size),然后只在 **这 K 个文档** 上重新算分;属于 **fetch 阶段**。  
• 性能:只动少量文档,**比 function_score 轻量**。  
• 典型用途  
- 用 **昂贵脚本** 或 **复杂机器学习模型** 给 Top-K 做二次精排  
- 把 **phrase proximity**、**sloppy 查询** 放在 rescore 里,避免对全量文档计算  
- 多轮 rescore:第一轮粗排,第二轮用更复杂的模型微调  
- A/B 测试:只对小窗口做实验,不影响全量

──────────────────  
3. 简单对比

| 维度          | function_score                 | rescore                         |
|---------------|--------------------------------|---------------------------------|
| 生效阶段      | query                          | fetch(先粗排再精排)           |
| 处理文档量    | 所有命中文档                   | 窗口内的 Top-K(可配置)        |
| 性能          | 重                             | 轻(窗口小就便宜)              |
| 能否用脚本    | 能                             | 能                              |
| 能否链式      | 只能一个 function_score        | 可配多个 rescore 按顺序执行     |
| 典型场景      | 业务加权、数值衰减、随机打散   | 昂贵模型精排、phrase proximity  |

──────────────────  
4. 一句话选型

• **想对所有文档一视同仁地改分** → 用 `function_score`  
• **只想在“头部结果”上精雕细琢** → 用 `rescore`

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

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

相关文章

无广告纯净体验 WPS2016 精简版:移除联网模块 + 非核心组件,古董电脑也能跑

各位办公小能手们!今天给你们介绍一款超神的办公软件——WPS2016精简版!它有多小呢?才33MB,简直就是软件界的小不点儿!别看它个头小,功能可一点儿都不含糊,文字、表格、演示这三大功能它全都有。…

《PyWin32:Python与Windows的桥梁,解锁系统自动化新姿势》

什么是 PyWin32在 Windows 平台的 Python 开发领域中,PyWin32 是一个举足轻重的库,它为 Python 开发者打开了一扇直接通往 Windows 操作系统底层功能的大门。简单来说,PyWin32 是用于 Python 访问 Windows API(Application Progra…

vite如何生成gzip,并在服务器上如何设置开启

1. 安装插件npm install vite-plugin-compression -D2. 在 vite.config.ts 中配置TypeScriptimport { defineConfig } from vite import compression from vite-plugin-compressionexport default defineConfig({plugins: [compression({algorithm: gzip,ext: .gz,threshold: 1…

1068万预算!中国足协大模型项目招标,用AI技术驱动足球革命

中国足协启动国际足联“前进计划”下的大数据模型项目,预算1068万元。该项目将建立足球大数据分析平台,利用AI技术为国家队、青少年足球、业余球员及教练员裁判员提供精准数据分析服务,旨在通过科技手段提升中国足球竞技水平。 中国足球迎来数…

AI产品经理面试宝典第12天:AI产品经理的思维与转型路径面试题与答法

多样化思维:如何跳出单一框架解题? 面试官:AI产品常面临复杂场景,请举例说明你如何运用多样化思维解决问题? 你的回答:我会从三个维度展开:多角度拆解需求本质,多层级融合思维模式,多变量寻找最优解。比如设计儿童教育机器人时,不仅考虑功能实现(技术层),还融入情…

vscode.window对象讲解

一、vscode.window 核心架构图 #mermaid-svg-fyCxPz1vVhkf96nE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fyCxPz1vVhkf96nE .error-icon{fill:#552222;}#mermaid-svg-fyCxPz1vVhkf96nE .error-text{fill:#5522…

为什么一个 @Transactional 注解就能开启事务?揭秘 Spring AOP 的底层魔法

你是否也曾深陷在各种“额外”逻辑的泥潭,为了给一个核心业务方法增加日志、权限校验或缓存,而不得不将这些非核心代码硬塞进业务类中,导致代码臃肿、职责不清?是时候用代理设计模式 (Proxy Design Pattern) 来解脱了!…

《Spring 中上下文传递的那些事儿》Part 8:构建统一上下文框架设计与实现(实战篇)

📝 Part 8:构建统一上下文框架设计与实现(实战篇) 在实际项目中,我们往往需要处理多种上下文来源,例如: Web 请求上下文(RequestContextHolder)日志追踪上下文&#xf…

配置驱动开发:初探零代码构建嵌入式软件配置工具

前言在嵌入式软件开发中,硬件初始化与寄存器配置长期依赖人工编写重复代码。以STM32外设初始化为例,开发者需手动完成时钟使能、引脚模式设置、参数配置等步骤,不仅耗时易错(如位掩码写反、模式枚举值混淆)&#xff0c…

Elasticsearch混合搜索深度解析(下):执行机制与完整流程

引言 在上篇中,我们发现了KNN结果通过SubSearch机制被保留的关键事实。本篇将继续深入分析混合搜索的执行机制,揭示完整的处理流程,并解答之前的所有疑惑。 深入源码分析 1. SubSearch的执行机制 1.1 KnnScoreDocQueryBuilder的实现 KNN结果被…

Apache HTTP Server 从安装到配置

一、Apache 是什么?Apache(全称 Apache HTTP Server)是当前最流行的开源Web服务器软件之一,由Apache软件基金会维护。它以稳定性高、模块化设计和灵活的配置著称,支持Linux、Windows等多平台,是搭建个人博客…

php中调用对象的方法可以使用array($object, ‘methodName‘)?

是的,在PHP中,array($object, methodName) 是一种标准的回调语法,用于表示“调用某个对象的特定方法”。这种语法可以被许多函数(如 call_user_func()、call_user_func_array()、usort() 等)识别并执行。 语法原理 在P…

【设计模式】单例模式 饿汉式单例与懒汉式单例

单例模式(Singleton Pattern)详解一、单例模式简介 单例模式(Singleton Pattern) 是一种 创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。(对象创建型模式&…

vue3 el-table 行数据沾满格自动换行

在使用 Vue 3 结合 Element Plus 的 <el-table> 组件时&#xff0c;如果你希望当表格中的行数据文本过长时能够自动换行&#xff0c;而不是溢出到其他单元格或简单地截断&#xff0c;你可以通过以下几种方式来实现&#xff1a;方法 1&#xff1a;使用 CSS最简单的方法是通…

windows电脑远程win系统服务器上的wsl2

情况 我自己使用win11笔记本电脑&#xff0c;想要远程win11服务器上的wsl2 我这里只有服务器安装了wsl2&#xff0c;win11笔记本没有安装 因此下面提到的Ubuntu终端指的是win服务器上的wsl2终端 一定要区分是在哪里输入命令&#xff01;&#xff01; 安装SSH 在服务器上&#x…

神经辐射场 (NeRF):重构三维世界的AI新视角

神经辐射场 (NeRF)&#xff1a;重构三维世界的AI新视角 旧金山蜿蜒起伏的街道上&#xff0c;一辆装备12个摄像头的Waymo自动驾驶测试车缓缓驶过。它记录的280万张街景图像并未被简单地拼接成平面地图&#xff0c;而是被输入一个名为Block-NeRF的神经网络。数周后&#xff0c;一…

Kubernetes自动扩缩容方案对比与实践指南

Kubernetes自动扩缩容方案对比与实践指南 随着微服务架构和容器化的广泛采用&#xff0c;Kubernetes 自动扩缩容&#xff08;Autoscaling&#xff09;成为保障生产环境性能稳定与资源高效利用的关键技术。面对水平 Pod 扩缩容、垂直资源调整、集群节点扩缩容以及事件驱动扩缩容…

【CVPR2025】计算机视觉|SIREN: 元学习赋能!突破INR高分辨率图像分类难题

论文地址&#xff1a;https://arxiv.org/pdf/2503.18123v1 代码地址&#xff1a;https://github.com/SanderGielisse/MWT 关注UP CV缝合怪&#xff0c;分享最计算机视觉新即插即用模块&#xff0c;并提供配套的论文资料与代码。 https://space.bilibili.com/473764881 摘要 …

牛客周赛 Round 99

赛时成绩如下&#xff1a;A. Round 99题目描述 对于给定的五位整数&#xff0c;检查其中是否含有数字 99&#xff1b;换句话说&#xff0c;检查是否存在相邻的两个数位&#xff0c;其值均为 。解题思路&#xff1a; 检查相邻的两个数字是否均为9#include <bits/stdc.h> u…

从0到1搭建个人技术博客:用GitHub Pages+Hexo实现

一、为什么要搭建个人技术博客&#xff1f; 在技术圈&#xff0c;拥有个人博客的好处不言而喻&#xff1a; 简历加分项&#xff1a;面试官更青睐有技术沉淀的候选人知识系统化&#xff1a;输出倒逼输入&#xff0c;加深技术理解人脉拓展&#xff1a;吸引同行关注&#xff0c;…