当前位置: 首页 > article >正文

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 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

在这里插入图片描述


http://www.kler.cn/a/3809.html

相关文章:

  • EasyControl:首个登陆AWS Marketplace的中国MDM先锋
  • Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations
  • 【神经网络基础】
  • 四、华为交换机 STP
  • 国家统计局湖北调查总队副总队长张小青一行调研珈和科技农业遥感调查智能化算法
  • CT重建笔记(三)——共轭梯度法
  • Flink学习笔记(六)Time详解
  • 整理了一份github上比较热门的ChatGPT项目,值得收藏
  • stm32学习笔记-10 I2C通信
  • STM32 KEI 调试新手注意事项
  • 2020年第十一届C/C++ B组第一场蓝桥杯省赛真题
  • 代码质量提升,代码扫描 review 之 Codacy 工具使用
  • 常见的2D与3D碰撞检测算法
  • 信息系统项目管理师第四版知识摘编:第9章 项目范围管理
  • 【Linux】进程理解与学习Ⅳ-进程地址空间
  • 冯诺依曼,操作系统以及进程概念
  • RPA机器人能做什么?自动化办公、简化工作流程……还有很多事情等着你挖掘
  • Chat GPT介绍
  • 推荐人工智能领域十大类专业好用的深度学习预训练模型
  • 2022财报逆转,有赞穿透迷雾实现突破
  • 简单XXE漏洞理解以及在实战中演练【网络安全】
  • Springboot项目如何实现mybatis的流式查询
  • 【Linux】-初识Linux
  • 尚硅谷大数据Hadoop教程-笔记03【MapReduce】
  • 【Linux】 基础IO——文件(中)
  • 计算机视觉知识点(一)——交并比(IoU)及其若干改进