news 2026/4/27 16:30:28

Elasticsearch搜索算法深度剖析:BM25算法原理及与TF-IDF对比实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch搜索算法深度剖析:BM25算法原理及与TF-IDF对比实战指南

Elasticsearch搜索算法深度剖析:BM25算法原理及与TF-IDF对比实战指南

    • 前言
    • 一、BM25 算法核心认知
      • 1.1 什么是 BM25?
      • 1.2 BM25 适用场景
      • 1.3 BM25 整体工作流程
    • 二、BM25 算法核心公式与组成部分
      • 2.1 BM25 核心公式
      • 2.2 公式中 5 大核心组件
    • 三、传统 TF-IDF 算法回顾
      • 3.1 TF-IDF 公式
      • 3.2 TF-IDF 的致命缺陷
    • 四、BM25 相比 TF-IDF 的 5 大核心改进(重点!)
      • 改进 1:词频 TF 具有**饱和机制**(最核心改进)
      • 改进 2:加入**文档长度归一化**
      • 改进 3:IDF 计算更平滑、更稳定
      • 改进 4:可调节参数(k1、b),业务适配性更强
      • 改进 5:抑制长文本虚假相关性
    • 五、BM25 与 TF-IDF 全方位对比表
    • 六、如何在 ES 中查看/配置 BM25 参数?
      • 6.1 查看索引默认相似度算法
      • 6.2 自定义 BM25 参数(高级调优)
    • 七、为什么 ES 一定要替换成 BM25?
    • 八、总结
      • 总结

🌺The Begin🌺点点关注,收藏不迷路🌺

前言

在 Elasticsearch 搜索引擎中,相关性算分是决定搜索结果排序是否精准的核心。在 ES 5.x 版本之前,默认使用TF-IDF算法作为相关性评分标准;从 5.x 版本开始,官方将默认评分算法切换为BM25,一直沿用至今。

很多开发者在使用 ES 进行搜索开发时,只知道_score是相关性分数,却不了解 BM25 是什么、比 TF-IDF 好在哪里、为什么能成为现代搜索引擎的标准算法。

本文将从定义、核心原理、计算公式、流程图、与 TF-IDF 的对比、改进点等维度,用通俗易懂的方式深度讲解 BM25 算法,帮助你彻底掌握 ES 搜索排序的底层逻辑。

一、BM25 算法核心认知

1.1 什么是 BM25?

BM25(Best Match 25)是一种基于概率框架的文本相关性检索算法,是目前 Elasticsearch、Lucene、Solr、PostgreSQL 等主流搜索引擎/数据库的默认相关性算分算法

简单理解:
BM25 = 优化升级后的 TF-IDF
它保留了 TF-IDF 的核心思想(词频、逆文档频率),同时解决了 TF-IDF 的天然缺陷,让搜索排序更精准、更稳定。

1.2 BM25 适用场景

  • 全文检索相关性排序
  • 多字段搜索权重计算
  • 长文本/短文本混合搜索
  • 企业级精准搜索业务

1.3 BM25 整体工作流程

用户输入查询词

查询分词处理

计算每个词的IDF(稀有度)

计算文档内词频TF

字段长度归一化(短文本加权)

TF饱和处理(抑制词频泛滥)

加权求和得到最终_score

按分数从高到低排序返回结果

流程说明

  1. BM25 先计算每个搜索词的稀有度权重(IDF)
  2. 再计算词在文档中的出现频率(TF)
  3. 加入长度归一化,让短字段权重更高
  4. 对 TF 做饱和限制,避免关键词重复导致分数虚高
  5. 最终生成相关性分数,完成排序

二、BM25 算法核心公式与组成部分

ES 中使用的是BM25 标准公式,结构清晰、可解释性强:

2.1 BM25 核心公式

Score = Σ( IDF(q) * TF(d,q) * (k1 + 1) / ( TF(d,q) + k1 * (1 - b + b * |d| / avgdl ) ) )

2.2 公式中 5 大核心组件

  1. IDF(q)
    逆文档频率,代表查询词的稀有程度,越稀有的词权重越大。
  2. TF(d,q)
    词频,代表查询词在文档中出现的次数
  3. k1
    词频饱和系数(ES 默认 1.2),控制词频对分数的影响上限。
  4. b
    长度归一化系数(ES 默认 0.75),控制文本长度对分数的影响。
  5. |d| / avgdl
    文档长度 / 平均文档长度,用于短文本加权

三、传统 TF-IDF 算法回顾

TF-IDF 是最经典的检索算法,由两部分组成:

3.1 TF-IDF 公式

Score = TF(q,d) × IDF(q)
  • TF:词在文档中出现次数越多,分数越高
  • IDF:词在全库中越少,分数越高

3.2 TF-IDF 的致命缺陷

  1. 词频无上限,会无限增长
    关键词重复越多,分数越高,容易被恶意刷词干扰。
  2. 不考虑文档长度
    长文章容易因为词多而排名虚高。
  3. 无饱和机制
    词频达到一定次数后,相关性不再提升,但分数仍在涨。
  4. 长文本权重过高
    正文长文本分数 > 标题短文本,不符合搜索习惯。

四、BM25 相比 TF-IDF 的 5 大核心改进(重点!)

BM25 完全解决了 TF-IDF 的缺陷,这也是 ES 官方切换默认算法的根本原因。

改进 1:词频 TF 具有饱和机制(最核心改进)

  • TF-IDF:词频越高,分数无限上涨
  • BM25:词频达到一定阈值后,分数不再增长,趋于平稳
  • 效果:避免关键词堆砌导致排名异常,搜索更公平

改进 2:加入文档长度归一化

  • BM25 会判断文档是长还是短
  • 文档越短,权重越高
  • 效果:标题(短)匹配 > 正文(长)匹配,符合人类搜索习惯

改进 3:IDF 计算更平滑、更稳定

  • BM25 优化了 IDF 公式,避免极端值
  • 对高频词、低频词的权重分配更合理

改进 4:可调节参数(k1、b),业务适配性更强

  • k1:控制词频影响程度
  • b:控制长度归一化强度
  • 可根据业务场景动态调优,TF-IDF 不支持

改进 5:抑制长文本虚假相关性

  • TF-IDF:长文章容易因为词多排第一
  • BM25:自动降低长文本权重,避免“水文章”排在前面

五、BM25 与 TF-IDF 全方位对比表

对比维度TF-IDF(传统算法)BM25(现代算法)
ES 默认版本5.x 之前5.x ~ 最新版
词频机制无上限,无限增长有饱和上限
文档长度不考虑长度归一化,短文本加权
可调参数k1、b 可调优
抗干扰差,易被关键词堆砌影响强,稳定可靠
排序精度一般高,企业级标准
适用场景简单检索生产环境、精准搜索

六、如何在 ES 中查看/配置 BM25 参数?

6.1 查看索引默认相似度算法

GET/your_index/_settings?include_defaults=true

结果中会显示:

"similarity": { "default": "BM25" }

6.2 自定义 BM25 参数(高级调优)

PUT/my_index{"settings":{"index":{"similarity":{"default":{"type":"BM25","k1":1.2,"b":0.75}}}}}
  • 标题类短字段:b调小(如 0.5)
  • 正文类长字段:b调大(如 0.8)

七、为什么 ES 一定要替换成 BM25?

  1. TF-IDF 太容易被作弊:重复关键词就能刷排名
  2. BM25 更符合真实搜索习惯:标题匹配优先、短文本优先
  3. 长文本不会虚高:大幅提升搜索体验
  4. 工业级标准:全球所有主流搜索引擎都使用 BM25

八、总结

BM25 是基于概率模型的新一代相关性检索算法,是 TF-IDF 的全面升级版,也是 Elasticsearch 5.x 之后的默认算分核心。

它保留了 TF-IDF 的词频、稀有度思想,同时新增词频饱和、长度归一化、可调参数三大核心能力,彻底解决了 TF-IDF 的缺陷,让搜索结果更精准、更稳定、更符合用户习惯。

对于搜索开发工程师而言,理解 BM25 是进阶 ES 高手、优化搜索相关性、解决排序问题的必备基础。


总结

  1. BM25是 ES 5.x+ 默认相关性算分算法,基于概率模型
  2. BM25 继承 TF-IDF 思想,但解决了其所有缺陷
  3. 最关键改进:词频饱和机制 + 文档长度归一化
  4. 优势:排序精准、抗干扰、可调参、适合生产环境
  5. 结论:现代搜索引擎已全面抛弃 TF-IDF,全面使用 BM25


🌺The End🌺点点关注,收藏不迷路🌺
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 16:30:27

终极指南:3分钟学会用QtScrcpy在电脑上流畅控制安卓手机

终极指南:3分钟学会用QtScrcpy在电脑上流畅控制安卓手机 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcp…

作者头像 李华
网站建设 2026/4/27 16:22:20

OBS多平台直播同步终极方案:一键实现跨平台推流

OBS多平台直播同步终极方案:一键实现跨平台推流 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 对于直播内容创作者来说,多平台直播同步是扩大观众覆盖、提升内容…

作者头像 李华
网站建设 2026/4/27 16:17:57

华硕笔记本终极控制指南:G-Helper让你的ROG设备性能翻倍

华硕笔记本终极控制指南:G-Helper让你的ROG设备性能翻倍 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …

作者头像 李华
网站建设 2026/4/27 16:17:27

React TypeScript Cheatsheet:移动端开发类型注意事项终极指南

React TypeScript Cheatsheet:移动端开发类型注意事项终极指南 【免费下载链接】react Cheatsheets for experienced React developers getting started with TypeScript 项目地址: https://gitcode.com/gh_mirrors/reactt/react-typescript-cheatsheet Reac…

作者头像 李华
网站建设 2026/4/27 16:08:51

ESXi 主机进入维护模式会自动迁移 VM 吗?完整实操与避坑指南

本文针对 ESXi 虚拟化运维中最常见的核心疑问 —— 主机进入维护模式是否会自动迁移虚拟机,给出明确答案:开启合规 DRS 功能的 vSphere 集群,会自动通过 vMotion 热迁移 VM;无 DRS 的环境或独立主机无法自动迁移,需手动…

作者头像 李华