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

news/2024/12/29 17:45:14/

在这里插入图片描述

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

文章目录

  • 一、内置分词器
    • 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.ppmy.cn/news/31096.html

相关文章

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名…

剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方 难度:middle\color{orange}{middle}middle 题目描述 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^{n})。不得使用库函数,同时不需要考虑大数问题。 示例 1:…

字体反爬慢慢总结破解方式

什么是字体反爬 网页开发者自己创造一种字体,因为在字体中每个汉字都有其代号,那么以后再网页中不会直接显示这个文字的效果。而是显示其代号,因此即使获取了网页的文本内容。也只是获取到文字的代号,而不是文字本身。 简单来说&…

【LeetCode——排序链表】

文章目录排序链表二、解题思路:二.实现的代码总结:排序链表 一道链表排序题,链接在这里 二、解题思路: 解题思路:使用归并排序(用递归实现) 第一步:先找到链表的中间节点 第二步…

实验7 图像水印

本次实验大部分素材来源于山大王成优老师的讲义以及冈萨雷斯(MATLAB版),仅作个人学习笔记使用,禁止用作商业目的。 文章目录一、实验目的二、实验例题1. 数字图像水印技术2. 可见水印的嵌入3. 不可见脆弱水印4. 不可见鲁棒水印一、…

第十四届蓝桥杯三月真题刷题训练——第 5 天

目录 题目1:数的分解 题目描述 运行限制 代码: 题目2:猜生日 题目描述 运行限制 代码: 题目3:成绩分析 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码: 题目4:最大和…

搭建Samba服务器

搭建Samba服务器 文章目录搭建Samba服务器samba安装安装命令配置-ubuntu侧为samba服务器创建一个共享目录share创建使用该共享文件夹的账号修改samba服务器配置文件重启samba服务windows创建映射1.点击映射网络驱动器2.输入Ubuntu中的ip地址及其用户信息3.输入用户信息及其密码…

为「IT女神勋章」而战

大家好,我是空空star,今天为「IT女神勋章」而战 文章目录前言一、IT女神勋章二、绘制爱心1.htmlcssjs来源:一行代码代码效果2.python来源:C知道代码效果3.go来源:复制代码片代码效果4.java来源:download代码…