Elasticsearch 核心:分词功能实现原理全解析
Elasticsearch 核心:分词功能实现原理全解析
- 一、前言
- 二、基础概念:什么是分词?
- 2.1 分词定义
- 2.2 分词的作用
- 三、分词功能的核心载体:Analyzer(分析器)
- 四、Elasticsearch 分词实现原理(完整流程图)
- 五、分词功能实现原理(分步详细讲解)
- 5.1 第一步:Character Filter 字符预处理(文本清洗)
- 5.2 第二步:Tokenizer 核心分词(最关键)
- 5.3 第三步:Token Filter 词条标准化加工
- 六、分词完整执行过程(真实案例)
- 分词步骤:
- 七、分词在 Elasticsearch 中的两大触发时机
- 7.1 写入时分词(Index Analyzer)
- 7.2 查询时分词(Search Analyzer)
- 重点原则(90% 新手踩坑)
- 八、中文分词实现原理(IK 分词核心)
- IK 分词原理:
- 九、分词底层原理总结(极简版)
- 十、为什么分词原理如此重要?
- 十一、总结(3 句核心口诀)
🌺The Begin🌺点点关注,收藏不迷路🌺 |
一、前言
分词是 Elasticsearch 全文检索的灵魂。
为什么输入“苹果手机”能搜到包含“苹果”或“手机”的商品?
为什么中文能按词语拆分,而英文能按单词拆分?
这一切都依赖ES 的分词机制。
很多新手只知道用分词器,但不懂原理,导致搜索不准、性能低下、数据查不出来。
本文带你彻底搞懂:Elasticsearch 分词功能的完整实现原理、执行流程、底层结构、作用机制,包含流程图、结构化步骤、标准 CSDN 博客格式,可直接发布。
二、基础概念:什么是分词?
2.1 分词定义
分词(Analysis)= 将一段原始文本按照一定规则,切分成一个个**词语/词条(Term)**的过程。
例如:
我喜欢Elasticsearch → 分词后 → [我, 喜欢, elasticsearch]2.2 分词的作用
- 写入时:拆分文本 → 构建倒排索引
- 查询时:拆分关键词 → 匹配倒排索引
- 决定搜索精准度、召回率、性能
三、分词功能的核心载体:Analyzer(分析器)
ES 分词不是一个单独功能,而是由Analyzer(分析器)完整实现。
一个分析器 = 3 个固定组件(顺序不可变):
- Character Filter(字符过滤器)
- Tokenizer(分词器)
- Token Filter(词条过滤器)
四、Elasticsearch 分词实现原理(完整流程图)
下面是ES 分词最核心、最标准的执行流程图,必须掌握:
执行顺序:固定从上到下执行!
五、分词功能实现原理(分步详细讲解)
5.1 第一步:Character Filter 字符预处理(文本清洗)
作用:在分词之前清洗原始文本
处理对象:完整字符串
可做什么:
- 去除 HTML 标签
- 替换特殊符号(& → and)
- 过滤表情、空格、标点
数量:0~多个
示例:
<h1>我爱ES</h1>→ 清洗后 → 我爱ES5.2 第二步:Tokenizer 核心分词(最关键)
作用:按照规则切分词语
这是分词的核心!
数量:必须有且仅有1个
常见分词规则:
standard:按单词、标点分割ik_max_word:中文最细粒度拆分ik_smart:中文粗粒度拆分whitespace:按空格切分keyword:不切分
示例(IK 分词):
我爱深度学习 → [我, 爱, 深度, 学习, 深度学习]5.3 第三步:Token Filter 词条标准化加工
作用:对切分后的词语列表进行二次处理
处理对象:词语流(Token Stream)
可做什么:
- 转小写
- 去掉停用词(的、了、is、the)
- 增加同义词
- 拼音转换
- 去重
数量:0~多个
示例:
[I, LOVE, THE, ES] → 小写 + 去停用词 → [love, es]六、分词完整执行过程(真实案例)
原始文本:
<h1>我爱Elasticsearch</h1>分词步骤:
Character Filter
去除 HTML →我爱ElasticsearchTokenizer(IK)
切分 →[我, 爱, Elasticsearch]Token Filter
- 小写转换 →
elasticsearch - 去停用词 → 移除
我 - 最终词条 →
[爱, elasticsearch]
- 小写转换 →
七、分词在 Elasticsearch 中的两大触发时机
7.1 写入时分词(Index Analyzer)
文档写入 → 分词 → 生成词条 → 构建倒排索引7.2 查询时分词(Search Analyzer)
用户输入关键词 → 分词 → 匹配倒排索引 → 返回结果重点原则(90% 新手踩坑)
写入和查询必须使用相同的分词规则,否则搜不到数据!
八、中文分词实现原理(IK 分词核心)
中文没有空格,必须使用IK 分词插件。
IK 分词原理:
- 加载中文词典
- 使用正向最大匹配算法 / 逆向匹配算法
- 结合词典进行词语切分
- 支持自定义词典、扩展词、停用词
两种模式:
- ik_max_word:最细粒度拆分(搜索用)
- ik_smart:快速粗粒度拆分(写入用)
示例:
中华人民共和国 ik_max_word → [中华人民共和国, 中华人民, 中华, 华人, 人民共和国, 人民, 共和国]九、分词底层原理总结(极简版)
- 先清洗文本
- 再切分词语
- 最后标准化处理
- 输出词条列表
- 用于构建倒排索引
一句话总结:
分词 = 文本清洗 + 词语切分 + 标准化处理 + 生成词条
十、为什么分词原理如此重要?
- 决定搜索是否准确
- 决定召回率是否足够
- 决定性能是否高效
- 决定是否能搜到数据
- 是倒排索引的基础
十一、总结(3 句核心口诀)
- ES 分词 = Analyzer 分析器完成
- 分析器由 3 组件组成:字符过滤 → 分词 → 词条加工
- 写入和查询必须使用相同分词规则
理解分词原理,你就真正掌握了 Elasticsearch全文检索的底层核心。
🌺The End🌺点点关注,收藏不迷路🌺 |
