Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例

❤️ 博客主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:大数据核心技术从入门到精通
文章目录
- 一、内置分词器
- 1. Standard(标准分词器)
- 英文示例
- 中文示例
- 2. Simple(简单分词器)
- 英文示例
- 中文示例
- 3. Whitespace(空格分词器)
- 英文示例
- 中文示例
- 4. Stop(停止分词器)
- 英文示例
- 中文示例
- 5. Keyword(关键字分词器)
- 英文示例
- 中文示例
- 6. Pattern(模板分词器)
- 英文示例
- 中文示例
- 7. Language(语言分词器)
- 英文示例
- 中文示例
- 8. Fingerprint(指纹分词器)
- 英文示例
- 中文示例
- 二、总结
- 三、附录
- 附录一:关于“停止词”的解释
- 附录二:Java 正则表达式
- 附录三:参考资料
- 四、系列文章
- 五、热门专栏
大家好,我是水滴~~
今天是女神节,在这里先祝各位女神们节日快乐。

一、内置分词器
Elasticsearch 内置了 8 种分词器,我们无需做任何配置即可使用它们。
1. Standard(标准分词器)
standard是 Elasticsearch 的默认分词器,它通过 Unicode 文本分割算法,根据单词将文本进行分词。它删除了大多数的标点符号,并将字母转为小写。
英文示例
测试分词器:
POST _analyze
{"analyzer": "standard","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "standard","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴, 尔, dell, 灵, 越, 15pro, 酷, 睿, i5, 笔, 记, 本, 电, 脑, 旗, 舰, 款 ]
2. Simple(简单分词器)
simple分词器会按照任何非字母字符进行分割,例如:数字、空格、连字符等。会丢弃非字符的字符,并将大写更改为小写。
英文示例
测试分词器:
POST /_analyze
{"analyzer": "simple","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "simple","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, pro酷睿i, 笔记本电脑旗舰款 ]
3. Whitespace(空格分词器)
whitespace顾名思义是按照空格进行分词的,即:简单的按照空格将原文进行分割。
英文示例
测试分词器:
POST _analyze
{"analyzer": "whitespace","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "whitespace","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔(DELL), 灵越15pro酷睿i5笔记本电脑旗舰款 ]
4. Stop(停止分词器)
stop分词器与simple相同,在些基础上会删除停止词(如:a, the, or等),并将大写转为小写。“停止词”见附录一。
英文示例
测试分词器:
POST _analyze
{"analyzer": "stop","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "stop","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, pro酷睿i, 笔记本电脑旗舰款 ]
5. Keyword(关键字分词器)
keyword不做分词,会将整个输入的字符串做为一个关键词。
英文示例
测试分词器:
POST _analyze
{"analyzer": "keyword","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "keyword","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款 ]
6. Pattern(模板分词器)
pattern分词器使用正则表达式将文本进行分词,表达式默认为:\W+,会删除所有中文。“正则表达式”见附录二。
英文示例
测试分词器:
POST _analyze
{"analyzer": "pattern","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "pattern","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ dell, 15pro, i5 ]
7. Language(语言分词器)
Language分词器按照特定语言进行分词,支持的语言有:arabic,armenian,basque,bengali,brazilian,bulgarian,catalan,cjk,czech,danish,dutch,english,estonian,finnish,french,galician,german,greek,hindi,hungarian,indonesian,irish,italian,latvian,lithuanian,norwegian,persian,portuguese,romanian,russian,sorani,spanish,swedish,turkish,thai。
其中cjk表示“中日韩语”,但使用结果并不理想。
英文示例
测试分词器:
POST _analyze
{"analyzer": "english","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ 2, quick, brown, fox, jump, over, lazy, dog, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "cjk","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, 15pro, 酷睿, i5, 笔记, 记本, 本电, 电脑, 脑旗, 旗舰, 舰款 ]
8. Fingerprint(指纹分词器)
fingerprint是一种特殊的分词器,它会删除重复的字符,将这一个个单字符进行排序,并连接成一个字符串,可用于重复检测的指纹(例如:文章抄袭检查)。
英文示例
测试分词器:
POST _analyze
{"analyzer": "fingerprint","text": "Yes yes, Gödel said this sentence is consistent and."
}
分词结果:
[ and consistent godel is said sentence this yes ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "fingerprint","text": "是的是的,Gödel说这句话是一致的。"
}
分词结果:
[ godel 一 句 是 的 致 话 说 这 ]
二、总结
Elasticsearch 内置的这些分词器对中文支持都不太好,而目前我们使用的中文分词器都是第三方插件,其中使用比较多的是“IK 分词器”。下一篇文章我们主要讲解:IK 分词器的安装、使用、自定义分词等。
三、附录
附录一:关于“停止词”的解释
引自百度百科:
停止词,是由英文单词:stopword翻译过来的,原来在英语里面会遇到很多a,the,or等使用频率很多的字或词,常为冠词、介词、副词或连词等。
如果搜索引擎要将这些词都索引的话,那么几乎每个网站都会被索引,也就是说工作量巨大。可以毫不夸张的说句,只要是个英文网站都会用到a或者是the。那么这些英文的词跟我们中文有什么关系呢? 在中文网站里面其实也存在大量的stopword,我们称它为停止词。比如,我们前面这句话,“在”、“里面”、“也”、“的”、“它”、“为”这些词都是停止词。这些词因为使用频率过高,几乎每个网页上都存在,所以搜索引擎开发人员都将这一类词语全部忽略掉。如果我们的网站上存在大量这样的词语,那么相当于浪费了很多资源。原本可以添加一个关键词,排名就可以上升一名的,为什么不留着添加为关键词呢?停止词对SEO的意义不是越多越好,而是尽量的减少为宜。
附录二:Java 正则表达式
Pattern (Java Platform SE 8 ) (oracle.com)
附录三:参考资料
Built-in analyzer reference | Elasticsearch Guide [7.17] | Elastic
四、系列文章
🔥 Elasticsearch 核心技术(一):Elasticsearch 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用
🔥 Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)
🔥 Elasticsearch 核心技术(五):常用数据类型详解
五、热门专栏
👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

相关文章:
Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例
❤️ 博客主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录一、内置分词器1. Standard(标准分词器)英文示例中文示例…...
Mysql8.0的特性
Mysql8.0的特性 建议使用8.0.17及之后的版本,更新的内容比较多。 新增降序索引 -- 如下所示,我们可以在创建索引时 在字段名后面指定desc进行降序排序 create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));group by 不再隐式排序 mysql5.7的版…...
JDK动态代理(tedu)(内含源代码)
JDK动态代理(tedu)(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87546187 目录JDK动态代理(tedu)(内含源代码)源代码下载链接…...
【数据结构】二叉搜索树
1、什么是二叉搜索树二叉搜索树又称为二叉排序树,二叉也就说明它跟二叉树一样最多只能有两个度,它可以是棵空树,也可以不是棵空树,当它不是棵空树的时候需要具备以下的性质:若它的左树不为空,那么它的左树上…...
抢跑数字中国建设,青岛市统计系统考察团赴实在智能调研统计数字员工
当前,数据要素价值不断显现,数字经济正引领着政企业加快数字技术的应用,融通创新工作机制,推进高质量转型。近日,中共中央、国务院印发了《数字中国建设整体布局规划》。《规划》指出,到2025年,…...
深浅拷贝——利用模拟实现basic_string深入理解
深浅拷贝——利用模拟实现basic_string深入理解 一、深浅拷贝的基本概念 深拷贝和浅拷贝都是指在对象复制时,复制对象的内存空间的方式。 1.1 深浅拷贝的不同之处 浅拷贝是指将一个对象的所有成员变量都直接拷贝给另一个对象,包括指针成员变量&#…...
大模型分布式系统
背景:模型越来越大,训练复杂度越来越高,需要训练的时间也是越来越长。那么我们该如何在现有的硬件基础上对模型做训练呢。模型规模的扩大,对硬件(算力、内存)的发展提出要求。然而,因为 内存墙 …...
【时序】时序预测任务模型选择如何选择?
时间序列是什么时间序列是一种特殊类型的数据集,其中一个或多个变量随着时间的推移被测量。 在时间序列中,观测值是随着时间的推移而测量的。你的数据集中的每个数据点都对应着一个时间点。这意味着你的数据集的不同数据点之间存在着一种关系。这对可以应用于时间序列数据集的…...
重温数据结构与算法之深度优先搜索
文章目录前言一、实现1.1 递归实现1.2 栈实现1.3 两者区别二、LeetCode 实战2.1 二叉树的前序遍历2.2 岛屿数量2.3 统计封闭岛屿的数目2.4 从先序遍历还原二叉树参考前言 深度优先搜索(Depth First Search,DFS)是一种遍历或搜索树或图数据结…...
STM32F103驱动LD3320语音识别模块
STM32F103驱动LD3320语音识别模块LD3320语音识别模块简介模块引脚定义STM32F103ZET6开发板与模块接线测试代码实验结果LD3320语音识别模块简介 基于 LD3320,可以在任何的电子产品中,甚至包括最简单的 51 作为主控芯片的系统中,轻松实现语音识…...
2023 最新可用Google镜像地址 长期更新
Google镜像说明 由于种种原因,国家还未开放Google搜索的使用。虽然可以通过某些技术手段实现访问,但是还是有一些同学需要借助Google搜索镜像才可以达到访问的目的;笔者特意搜集了一些2022年最新的Google搜索镜像供有需求的童鞋使用…...
MATLAB算法实战应用案例精讲-【优化算法】蝗虫优化算法(GOA)及其算法变种(附matlab和python代码实现)
目录 前言 算法原理 算法思想 GOA 算法的数学模型 迭代模型 算法流程...
数据结构与算法 顺序表、链表总结
文章目录顺序表1、顺序表的基本概念链表1 简介链表概念链表特点链表与数组的对比2 链表的类型分类链表循环单向链表1 简介概念2 数据存储和实现数据存储数据实现3 操作基本操作实现线性表(List):零个或多个数据元素的有限序列。在较复杂的线性…...
Nginx集群搭建-三台
1.使用root用户登录Linux服务器 2.创建用户 输入 adduser test 后回车 #test 为创建的用户 3.为创建的用户设置密码 输入 passwd test 后回车 输入两次密码 4.出现 passwd:所有的身份验证令牌已经成功更新。证明Linux新用户和密码创建成功 5.使用新用户test登录Linu…...
【算法】图的存储和遍历
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录1. 图的存储1.1 邻接矩阵1.2 邻接表2. 图的遍历2.1 dfs 遍历2.2 bfs 遍历1. 图的存储 引入 一般来说,树和图有两种存储方式&#…...
文件如何批量复制保存在多个文件夹中
在日常工作中经常需要整理文件,比如像文件或文件夹重命名或文件批量归类,文件批量复制到指定某个或多个文件来中保存备份起来。一般都家最常用方便是手动一个一个去重命名或复制到粘贴到某个文件夹中保存,有没有简单好用的办法呢,…...
16N60-ASEMI高压MOS管16N60
编辑-Z 16N60在TO-220封装里的静态漏极源导通电阻(RDS(ON))为0.2Ω,是一款N沟道高压MOS管。16N60的最大脉冲正向电流ISM为48A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。16N60功耗…...
Open3D 多个点云配准(C++版本)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 多路配准(多个点云配准)是指在全局空间中对齐多个几何块的过程。输入的数据可以是点云或深度图像 P i P_i P...
java实现Hbase 增删改查
目录 一、新建一个maven工程 二、代码实现 2.1、配置hbase信息,连接hbase数据库 2.2、创建命名空间 2.3、创建表 2.4、删除表,删除之前要设置为禁用状态 2.5、添加数据 2.6、获取命令表空间 / tables列表 2.7、get方法查看表的内容 2.8、scan方法…...
1109. 航班预订统计 差分数组
1109. 航班预订统计 差分数组技巧适⽤于频繁对数组区间进⾏增减的场景 1.由数组a生成差分数组b{b[0]0,i0(或者b[0]a[0],i0)b[i]a[i]−a[i−1],i>01.由数组a生成差分数组b\left\{\begin{array}{l}b[0]0,i0(或者b[0]a[0],i0)\\ b[i]a[i]-a[i-1],i>0\end{array}\right. 1.由…...
Save Image as Type:终极Chrome图片格式转换指南,三步快速解决网页图片格式不兼容难题
Save Image as Type:终极Chrome图片格式转换指南,三步快速解决网页图片格式不兼容难题 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址:…...
openGauss服务化部署实战:systemd单元文件配置详解
1. 为什么需要systemd管理openGauss 每次重启服务器都要手动启动数据库?这种操作既低效又容易出错。把openGauss交给systemd管理后,你会发现数据库服务像系统内置服务一样听话——开机自动启动、异常自动重启、日志集中收集,这才是专业运维该…...
Node.js 轻量级数据库 NeDB 实战指南:从入门到精通
1. 为什么你需要了解NeDB 如果你正在寻找一个轻量级的Node.js数据库解决方案,NeDB绝对值得你花时间研究。作为一个嵌入式数据库,它不需要单独运行数据库服务,数据可以直接存储在内存或磁盘文件中。我在多个小型项目中使用过NeDB,最…...
DeepSeek-OCR-2开发者案例:集成至RAG系统实现图文混合检索增强
DeepSeek-OCR-2开发者案例:集成至RAG系统实现图文混合检索增强 1. 项目背景与需求 最近在做一个智能文档问答系统,客户的需求很明确:他们有很多PDF文档,里面既有文字又有图片,用户提问时,系统要能同时理解…...
STM32标准库项目如何用VSCode一键编译下载?详解tasks.json与Makefile的联动配置
STM32标准库项目在VSCode中实现一键编译下载的终极指南 1. 为什么选择VSCode进行STM32开发? 传统嵌入式开发往往依赖于Keil、IAR等商业IDE,但这些工具存在几个明显痛点: 高昂的授权费用:商业IDE的许可证价格让个人开发者和小团队望…...
Postiz消息队列:任务优先级与重试机制的终极指南
Postiz消息队列:任务优先级与重试机制的终极指南 【免费下载链接】clickvote Add upvotes, likes, and reviews to any context ⭐️ 项目地址: https://gitcode.com/GitHub_Trending/cl/clickvote Postiz是一款功能强大的开源项目,专注于为开发者…...
FastAPI流式AI接口设计陷阱大全(2024高频真题+源码级调试实录)
第一章:FastAPI流式AI接口设计陷阱大全(2024高频真题源码级调试实录)流式响应被中间件静默截断 FastAPI 默认启用的 Starlette 中间件(如 HTTPSRedirectMiddleware 或自定义日志中间件)可能在未显式处理 StreamingResp…...
debian 更新内核后,nvidia 驱动突然不见了,处理
nvidia 驱动通常由 dkms 来构建 安装新内核后, 对应 linux-headers-amd64 没有安装到,导致 dkms 不为新内核 构建驱动 解决办法: apt update apt install linux-headers-amd64 它会自动为已有的内核安装 linux 头文件 然后 用命令 dpkg-recon…...
I2CLCD驱动库:HD44780字符屏的I²C轻量级嵌入式适配方案
1. I2CLCD库概述:面向嵌入式系统的字符型LCD IC适配驱动I2CLCD是一个轻量级、可移植的C语言驱动库,专为将标准HD44780兼容的字符型LCD(如1602、2004)通过IC总线接入MCU而设计。其核心价值在于消除并行接口对GPIO资源的高占用&…...
运维提效实战:用 Ansible+Cron 搞定日志自动清理,再也不用半夜爬起来删日志了
前言 作为常年和服务器打交道的运维人,估计没人没经历过半夜被磁盘爆满告警吵醒的崩溃 —— 远程登服务器、挨个找日志文件、手动删旧日志,一套操作下来人彻底清醒,回头还得担心误删关键文件。 其实这类重复又机械的运维活儿,完全…...
