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

news2025/7/12 12:21:11

在这里插入图片描述

❤️ 博客主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:大数据核心技术从入门到精通

文章目录

  • 一、内置分词器
    • 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 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

在这里插入图片描述

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

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

相关文章

八.异常控制流ECF

1.异常异常位于硬件和OS的交界部分系统调用是为应用程序提供到OS的入口点的异常进程和信号位于应用和OS的交界部分非本地跳转是ECF的应用层形式1.1 异常表异常是控制流中的突变,用来响应处理器状态的某些变化状态变化称为事件系统中可能的每种类型的异常都分配了一个…

虹科教您 | 在Windows环境下安装PCAN View及通讯测试指南

应用简介 PCAN-View软件是一款简化的CAN监视软件,可用于显示、发送、和记录CAN数据通讯。报文可手动和定期发送,用户可设置比特率。在处理期间显示总线系统错误和CAN硬件的存储器过满。示踪功能可用于记录和保存CAN数据通讯。本文档的作用在于&#xff…

软件测试的几个关键步骤,你需要知道

记得2年前刚毕业的时候听说了软件测试这个行业,当时也去百度仔细进行了一番搜索,评价基本千篇一律的看好。 看好的原因在于,专家认为未来的互联网市场用户体验至上,而产品质量与用户体验有紧密的联系,自从近年产品经理…

eyoucms field 获取channelartlist标签的字段值

【基础用法】 标签&#xff1a;field 描述&#xff1a;获取channelartlist标签里的字段值&#xff0c;field标签只能在channelartlist标签里使用。 用法&#xff1a; {eyou:channelartlist typeid栏目ID typeson row20} <a href{eyou:field nametypeurl /}>{eyou:fi…

SCCM 应用程序管理

Microsoft System Center Configuration Manager &#xff08;SCCM&#xff09; 被认为是管理 Microsoft 应用程序的示例性工具。它可以无缝地进行补丁管理和软件部署。但处理第三方应用程序不是它的游戏。因此&#xff0c;除了补丁管理之外&#xff0c;Patch Connect Plus 还为…

接口里面可以写实现方法吗【可以】 、接口可以多继承吗【可以】

比如下面这道题&#xff1a; 问: 接口里面可以写方法吗&#xff1f; 答: 当然可以啊&#xff0c;默认就是抽象方法。 . 问&#xff1a; 那接口里面可以写实现方法吗&#xff1f; 答&#xff1a; 不可以&#xff0c;所有方法必须是抽象的。 . 问&#xff1a; 你确定吗&#xff1…

Java面试题--SpringRefresh流程

Spring refresh 概述 Spring 容器是一个管理 bean 的容器&#xff0c;可以创建、注入和管理 bean 及其依赖关系。Spring 容器可以根据应用程序配置和运行时条件创建、初始化和销毁 bean。refresh() 函数是 Spring 容器中的一种功能&#xff0c;可以重新加载和刷新容器中的配置…

什么?同步代码块失效了?-- 自定义类加载器引起的问题

一、背景 最近编码过程中遇到了一个非常奇怪的问题&#xff0c;基于单例对象的同步代码块似乎失效了&#xff0c;百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例&#xff0c;在 init 方法中使用同步代码块来保证 data不…

Revit中图纸要怎么布局呢?

1、明确图纸布局原则。 2、在图纸上锁定视图的位置 在图纸上放置视图(或明细表)并根据需要对其定位后&#xff0c;可以将其锁定到位&#xff0c;这样就不会在无意中移动它。如果想要解锁视图&#xff0c;单击锁定图标即可&#xff0c;如图1所示。 3、在图纸上旋转视图 可以在图…

imx6 usb增强信号强度

USB信号 参考&#xff1a;官方文档 USB信号完整性取决于许多因素&#xff0c;如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同&#xff0c;因此客户需要微调参数&#xff0c;以获得最佳的信号质量。 测试板已经路由出两个USB端口:一个OTG1&#xff0c;一个主机。每个端…

xcode14安装swift package设置github账户token

这里写目录标题登录github账户,复制token打开xcode添加github账户选择swift package登录github账户,复制token 登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic) Note名…

Spring 响应式编程-读书笔记

序言 大家好&#xff0c;我是比特桃。本文为《Spring 响应式编程》的读书笔记&#xff0c;响应式技术栈可以创建极其高效、易于获取且具有回弹性的端点&#xff0c;同时响应式可以容忍网络延迟&#xff0c;并以影响较小的方式处理故障。响应式微服务还可以隔离慢速事务并加速速…

判断推理之图形推理

考点一动态位置变化&#xff08;一&#xff09;平移1.特征&#xff1a;图形在平面上的移动&#xff0c;图形本身的大小和形状不发生改变。2.方向&#xff1a;直线&#xff08;上下、左右、斜对角线&#xff09;&#xff0c;绕圈&#xff08;顺时针、逆时针&#xff09;3.距离&a…

聚观早报 |王兴宣布美团网约车业务调整;软银Arm被曝4月申请上市

今日要闻&#xff1a;王兴宣布美团网约车业务调整&#xff1b;钉钉收购协同办公厂商「我来 wolai」&#xff1b;软银旗下Arm被曝4月申请上市&#xff1b;小米汽车完成冬测&#xff1b;淘特负责人否认将被合并到淘宝 王兴宣布美团网约车业务调整 美团创始人王兴发布内部信&#…

蓝桥杯入门即劝退(二十六)组合问题(回溯算法)

-----持续更新Spring入门系列文章----- 如果你也喜欢Java和算法&#xff0c;欢迎订阅专栏共同学习交流&#xff01; 你的点赞、关注、评论、是我创作的动力&#xff01; -------希望我的文章对你有所帮助-------- 专栏&#xff1a;蓝桥杯系列 一、题目描述 给定两个整数 n …

css:使用filter和backdrop-filter实现高斯模糊效果

背景 今天接到一个需求是&#xff0c;使用高斯模糊的效果对一个页面进行模糊处理&#xff0c;正好借这个机会来整理一下 css3 中高斯模糊的两个 API API介绍 filter 说明&#xff1a; 该 API 是一个过滤器&#xff0c;不仅能实现高斯模糊&#xff0c;还有很多比如颜色偏移、…

【Linux】网络基础(1)

前言 相信没有网络就没有现在丰富的世界。本篇笔记记录我在Linux系统下学习网络基础部分知识&#xff0c;从关于网络的各种概念和关系开始讲起&#xff0c;逐步架构起对网络的认识&#xff0c;对网络编程相关的认知。 我的上一篇Linux文章呀~ 【Linux】网络套接字编程_柒海啦的…

利用 socket.io 实现前后端实时交互

官网地址&#xff1a;Socket.IO 项目结构&#xff1a; 服务端&#xff08;node&#xff09;代码&#xff1a; 首先安装 express&#xff0c;socket.io npm i express socket.io -S/server/index.js // 官网用例&#xff1a;https://socket.io/zh-CN/docs/v4/server-initial…

数据库-基础篇-6-多表查询(内连接、外连接、自连接)

一、多表关系 1.概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构也存在着各种联系&#xff0c;基本上分为三种&…

idea中 使用git实现远程仓库master分支和dev分支互相合并

一 新建dev分支 1.在右下角当前分支下&#xff0c;选择创建分支选项 2.给分支起名字 3.创建后&#xff0c;自动切换成新分支 4.将dev分支内容提交到远程dev仓库 进行add&#xff0c;commit&#xff0c;pull&#xff0c;push操作。 1commit操作 2.进行pull操作&#xff0c;远…