当前位置: 首页 > article >正文

Elasticsearch搜索排序实战:时间衰减函数(Decay Function)评分优化全解析

[TOC](Elasticsearch搜索排序实战时间衰减函数(Decay Function)评分优化全解析)The Begin点点关注收藏不迷路前言在内容搜索、电商推荐、新闻资讯、短视频、社区帖子等几乎所有搜索业务中都有一个共同的排序需求在匹配关键词的前提下越新的文档权重越高旧文档逐步降权。但直接按时间倒序排序会忽略相关性而单纯靠关键词评分又会让老旧热帖排在前面。Elasticsearch 提供的衰减函数Decay Function就是专门解决这个问题的神器能实现新内容加权、老内容平滑降权的效果。本文将从原理、流程图、核心参数、实战代码、业务场景全方位讲解带你彻底掌握时间衰减评分让搜索结果更符合用户习惯。一、什么是时间衰减Decay Function1.1 定义衰减函数是 Elasticsearch 内置的评分函数用于根据数值字段如时间、距离、价格让文档评分随着数值偏离中心点而逐渐下降。时间衰减 越新得分越高随时间推移得分平滑降低1.2 适用业务场景新闻/文章最新发布优先电商商品新品加权帖子/短视频新内容权重高招聘/公告最新优先任何“新内容比旧内容好”的业务1.3 时间衰减评分流程可视化用户搜索关键词BM25关键词相关性评分时间衰减函数介入以当前时间now为中心点新文档得分接近1.0 → 高分老文档得分逐步衰减 → 低分最终得分 基础分 × 时间衰减分既相关又最新的结果排最前二、ES 支持的 3 种衰减函数函数曲线特点适用场景gauss高斯衰减平滑缓慢下降最自然时间衰减首选exp指数衰减下降极快需要快速降权linear线性衰减直线下降简单业务结论时间衰减 99% 场景使用 gauss高斯三、高斯时间衰减函数完整语法3.1 基础模板GET/article/_search{query:{function_score:{query:{match:{title:Elasticsearch}},functions:[{gauss:{publish_time:{origin:now,scale:7d,offset:1d,decay:0.5}}}],boost_mode:multiply}}}3.2 四大核心参数必须理解origin中心点时间中心点now代表现在离它越近得分越高scale衰减规模衰减速度7d 7天30d 30天scale 越大衰减越慢offset偏移量保护期在偏移时间内不衰减得满分1d 24小时内不衰减保护新内容不被降权decay衰减系数超过 scale 后的得分倍率默认 0.5越小衰减越快四、参数含义直观解释秒懂origin: now → 以现在为最优时间 offset: 1d → 1天内发布的内容得满分 scale: 7d → 从第1天到第8天开始衰减 decay: 0.5 → 7天后得分变为原来的 0.5时间得分曲线0~1天得分 1.0满分8天得分 0.516天得分 0.25越老越低五、时间衰减实战场景直接复制使用场景 1新闻/文章24小时内不衰减gauss:{publish_time:{origin:now,offset:1d,scale:7d,decay:0.5}}场景 2电商新品7天内加权gauss:{create_time:{origin:now,offset:7d,scale:30d,decay:0.4}}场景 3短视频/帖子快速衰减gauss:{post_time:{origin:now,offset:6h,scale:2d,decay:0.3}}六、时间衰减 关键词匹配 业务评分生产最强模板企业级最常用搜索模板关键词匹配 时间衰减 销量/热度加权GET/shop/_search{query:{function_score:{query:{multi_match:{query:手机,fields:[title^3,desc^1],type:best_fields,tie_breaker:0.3}},functions:[{gauss:{publish_time:{origin:now,offset:1d,scale:7d,decay:0.5}}},{field_value_factor:{field:sales,modifier:log1p}}],boost_mode:multiply,score_mode:sum}}}七、时间衰减的优势不破坏关键词相关性新内容优先老内容平滑降权不会出现突然掉权、跳跃排序排序自然、符合用户习惯性能极高ES 内置优化八、最佳实践总结时间衰减优先使用gaussoffset设置新内容保护时间scale根据业务热度周期设置必须与function_score一起使用boost_modemultiply是最优组合方式九、总结Elasticsearch 时间衰减函数Decay Function是新内容优先排序的官方最优方案能让搜索结果同时满足关键词相关 发布时间新 排序平滑自然gauss最适合时间衰减originnow以当前时间为最优offset新内容保护期scale衰减速度decay衰减倍率掌握时间衰减你的搜索排序将达到企业级标准。总结时间衰减让新文档得分高、老文档得分平滑下降gauss是时间衰减最常用函数四大参数origin、offset、scale、decay必须在function_score中使用生产最佳实践关键词匹配 时间衰减 业务评分The End点点关注收藏不迷路

相关文章:

Elasticsearch搜索排序实战:时间衰减函数(Decay Function)评分优化全解析

[TOC](Elasticsearch搜索排序实战:时间衰减函数(Decay Function)评分优化全解析)🌺The Begin🌺点点关注,收藏不迷路🌺前言 在内容搜索、电商推荐、新闻资讯、短视频、社区帖子等几乎所有搜索业务中,都有一个…...

英雄联盟Akari助手:5个智能功能让游戏操作更轻松

英雄联盟Akari助手:5个智能功能让游戏操作更轻松 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中的繁琐操作而烦恼…...

# CentOS 7 + 中国服务器 + Codex + 中转 API 完整教程

CentOS 7 中国服务器 Codex 中转 API 完整教程 适用场景: 国内云服务器无法直连 OpenAI系统为 CentOS 7希望稳定使用 Codex CLI 这篇文章把安装、配置、避坑和最终可用方案一次讲清楚,适合直接照着操作。 一、先说核心问题 很多人在 CentOS 7 上安装 …...

从裸机到Linux设备树:RISC-V C驱动开发全链路打通,7步完成GPIO/UART/I2C三级适配

更多请点击: https://kaifayun.com 第一章:国产RISC-V芯片驱动开发全景概览 国产RISC-V生态正加速成熟,从平头哥玄铁、芯来Nuclei到赛昉JiangShan,多款高性能内核已进入量产阶段,驱动开发成为连接硬件能力与上层应用的…...

如何免费获得7款专业级思源宋体:设计师必备的完整字体包指南 [特殊字符]

如何免费获得7款专业级思源宋体:设计师必备的完整字体包指南 🎨 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文设计项目寻找高质量字体而烦恼吗&…...

LinkSwift:八大网盘直链下载助手终极指南,告别下载限速困扰

LinkSwift:八大网盘直链下载助手终极指南,告别下载限速困扰 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...

给ADAS工程师的CIS相机选型避坑指南:CRA、QE、CFA这些参数到底怎么配?

给ADAS工程师的CIS相机选型避坑指南:CRA、QE、CFA这些参数到底怎么配? 在ADAS系统开发中,摄像头作为环境感知的核心传感器,其性能直接影响算法识别准确率。面对供应商琳琅满目的参数手册,工程师常陷入"参数陷阱&…...

告别高配置!10分钟用“魔珐星云”打造你的第一个具身智能数字人

前言: 在过去的一年里,大模型(LLM)颠覆了我们撸代码和写文案的方式。但在惊叹之余,开发者们往往面临着一个尴尬的落地痛点:无论后端的模型推理多快、多智能,一到前端交互,AI 就只能…...

如何用Python脚本免费获取11.9万英语单词标准发音音频库?

如何用Python脚本免费获取11.9万英语单词标准发音音频库? 【免费下载链接】English-words-pronunciation-mp3-audio-download Download the pronunciation mp3 audio for 119,376 unique English words/terms 项目地址: https://gitcode.com/gh_mirrors/en/Englis…...

信息增益与互信息在机器学习特征选择中的应用

1. 信息增益与互信息的核心概念当我在2013年第一次用决策树解决客户分类问题时,发现模型对某些特征异常敏感。后来才明白这是信息增益在起作用——它量化了特征对分类结果的影响程度。信息增益(Information Gain)和互信息(Mutual Information)这对孪生概念&#xff…...

智读致用|《一人企业》第五章:价值观锚定,小而美地行动

系列:《一人企业》读书笔记 第5篇 书名:《一人企业:一个人也能赚钱的商业新模式》 作者:保罗贾维斯(Paul Jarvis) ---很多人创业的起点是一个想法,或者一股热情。 想法很快就有了,…...

Perseus终极指南:3步解锁碧蓝航线全皮肤免费体验

Perseus终极指南:3步解锁碧蓝航线全皮肤免费体验 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 还在为碧蓝航线中那些令人心动的皮肤无法体验而烦恼吗?Perseus原生库补丁为你提供…...

为什么92%的Docker WASM项目在边缘网关失败?:2024最新CNCF边缘白皮书验证的4个隐性兼容陷阱

更多请点击: https://intelliparadigm.com 第一章:Docker WASM边缘计算部署的现状与挑战 WebAssembly(WASM)正迅速成为边缘计算场景中轻量、安全、跨平台执行代码的关键载体,而 Docker 社区对 WASM 的原生支持仍处于早…...

从玩Atari到堆方块:一文看懂DeepMind的Gato如何用同一个模型搞定600多种任务

从玩Atari到堆方块:Gato如何用统一架构征服600种任务 当你在手机上切换聊天应用和游戏时,大脑会自然地处理不同模式的输入输出——文字、图像、触控。这种多任务处理能力,现在AI也能做到了。DeepMind的Gato模型就像AI界的"瑞士军刀"…...

一键启用MoE模型热切换,自动GPU显存压缩,Docker AI Toolkit 2026这3个隐藏API正在重构AI运维范式,你用上了吗?

更多请点击: https://intelliparadigm.com 第一章:Docker AI Toolkit 2026:AI运维范式跃迁的基石 Docker AI Toolkit 2026 并非简单容器化工具的迭代,而是面向大规模AI模型训练、推理与持续运维(MLOps)深度…...

【MCP 2026医疗数据访问控制权威指南】:20年HIPAA+GDPR双合规实战者亲授7大不可绕过的审计红线

更多请点击: https://intelliparadigm.com 第一章:MCP 2026医疗数据访问控制的合规演进与核心范式 随着《医疗数据治理条例(2025修订版)》与ISO/IEC 27001:2024附录H对医疗云平台(MCP)的强制性适配要求落地…...

Windows蓝屏0xE6?别慌,手把手教你用WinDbg定位NVIDIA显卡驱动的DMA违规问题

Windows蓝屏0xE6故障排查:NVIDIA显卡驱动的DMA违规分析与修复指南 当你正专注于工作或游戏时,屏幕突然蓝屏并显示"DRIVER_VERIFIER_DMA_VIOLATION (0xE6)"错误代码,这可能是NVIDIA显卡驱动与DMA(直接内存访问&#xff…...

抖音视频批量下载终极指南:douyin-downloader免费无水印工具完整教程

抖音视频批量下载终极指南:douyin-downloader免费无水印工具完整教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser …...

C语言轻量加密在STM32F4上的极限压测报告(RAM<1.2KB,ROM<4.8KB,AES-128加解密<8.3ms)

更多请点击: https://intelliparadigm.com 第一章:C语言物联网设备轻量级加密算法 在资源受限的物联网边缘设备(如ESP32、nRF52840或STM32L4系列)中,标准AES-256或RSA因内存占用高、计算开销大而难以直接部署。轻量级…...

i茅台自动预约完整指南:如何用Java技术告别手动抢购烦恼

i茅台自动预约完整指南:如何用Java技术告别手动抢购烦恼 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https:…...

【12.MyBatis源码剖析与架构实战】9.延迟加载源码剖析

MyBatis 延迟加载源码深度剖析 延迟加载(Lazy Loading)是 MyBatis 中用于优化关联查询的重要特性。当开启延迟加载后,对于 <association> 或 <collection> 定义的嵌套查询(select 属性),MyBatis 不会立即执行子查询,而是返回一个代理对象,仅在调用该对象的…...

nli-MiniLM2-L6-H768一文详解:蕴含/矛盾/中立三分类服务落地

nli-MiniLM2-L6-H768一文详解&#xff1a;蕴含/矛盾/中立三分类服务落地 1. 认识自然语言推理服务 自然语言推理(Natural Language Inference, NLI)是自然语言处理中的一项基础任务&#xff0c;它能够判断两段文本之间的逻辑关系。nli-MiniLM2-L6-H768是一个轻量级但功能强大…...

学术投稿避坑指南:SPL期刊被拒后,如何正确准备‘重新提交’(附详细材料清单)

学术投稿避坑指南&#xff1a;SPL期刊被拒后如何高效准备重新提交 第一次收到SPL期刊的拒稿邮件时&#xff0c;那种挫败感我至今记忆犹新。但后来才明白&#xff0c;拒稿不是终点——只要掌握正确的"重新提交"策略&#xff0c;完全可能逆风翻盘。与常规认知不同&…...

分子建模新手村:用Moltemplate+Anaconda在Ubuntu 20.04快速搭建第一个LAMMPS模型

分子建模新手村&#xff1a;用MoltemplateAnaconda在Ubuntu 20.04快速搭建第一个LAMMPS模型 当你第一次接触分子动力学模拟时&#xff0c;面对复杂的建模流程和晦涩的命令行操作&#xff0c;很容易感到无从下手。本文将带你从零开始&#xff0c;在Ubuntu 20.04系统上搭建一个完…...

终极指南:DellFanManagement如何彻底解决你的笔记本风扇噪音问题

终极指南&#xff1a;DellFanManagement如何彻底解决你的笔记本风扇噪音问题 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 你是否厌倦了Dell笔记…...

复旦微Procise升级IAR9.20后报错?手把手教你修复‘No IAR tool’s location’问题

复旦微Procise升级IAR9.20后报错排查与修复指南 当开发环境中的工具链发生版本迭代时&#xff0c;各种兼容性问题往往会接踵而至。最近不少使用复旦微电子Procise集成开发环境的工程师反馈&#xff0c;在将IAR Embedded Workbench从8.11版本升级到9.20后&#xff0c;Procise无法…...

C ++输入输出基础教程示例详解

PS&#xff1a;使用前看是否包含了头文件 <cstdio>(一) 输入 scanfscanf 函数从标准输入&#xff08;键盘&#xff09;读取信息&#xff0c;按照格式描述把读入的信息转换为指定数据类型的数据&#xff0c;并把这些数据赋给指定的程序变量。下面提供一个标准模版&#xf…...

【课题介绍】 多智能体协同围捕仿真,MATLAB运动仿真

文章目录课题介绍研究背景课题研究内容仿真系统组成运行结果主界面运行结果运动轨迹显示结果距离误差显示结果角度均匀性显示结果性能统计结果课题介绍 研究背景 随着无人机集群、移动机器人系统和多智能体协同控制技术的发展&#xff0c;多个智能体之间的协同运动逐渐成为无…...

方舟生存进化终极助手:TEKLauncher一站式游戏管理解决方案

方舟生存进化终极助手&#xff1a;TEKLauncher一站式游戏管理解决方案 【免费下载链接】TEKLauncher Launcher for ARK: Survival Evolved 项目地址: https://gitcode.com/gh_mirrors/te/TEKLauncher 还在为《方舟&#xff1a;生存进化》复杂的MOD管理、服务器配置和多语…...

Boost库配置后,你的第一个多线程程序怎么写?VS2019实战代码解析

从零开始&#xff1a;用Boost库编写你的第一个多线程程序&#xff08;VS2019实战指南&#xff09; 当你终于完成了Boost库在Visual Studio 2019中的配置&#xff0c;那种成就感可能很快会被一个新的问题取代&#xff1a;"现在该怎么开始实际编写代码&#xff1f;"本文…...