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

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.lryc.cn/news/34034.html

相关文章:

  • Mysql8.0的特性
  • JDK动态代理(tedu)(内含源代码)
  • 【数据结构】二叉搜索树
  • 抢跑数字中国建设,青岛市统计系统考察团赴实在智能调研统计数字员工
  • 深浅拷贝——利用模拟实现basic_string深入理解
  • 大模型分布式系统
  • 【时序】时序预测任务模型选择如何选择?
  • 重温数据结构与算法之深度优先搜索
  • STM32F103驱动LD3320语音识别模块
  • 2023 最新可用Google镜像地址 长期更新
  • MATLAB算法实战应用案例精讲-【优化算法】蝗虫优化算法(GOA)及其算法变种(附matlab和python代码实现)
  • 数据结构与算法 顺序表、链表总结
  • Nginx集群搭建-三台
  • 【算法】图的存储和遍历
  • 文件如何批量复制保存在多个文件夹中
  • 16N60-ASEMI高压MOS管16N60
  • Open3D 多个点云配准(C++版本)
  • java实现Hbase 增删改查
  • 1109. 航班预订统计 差分数组
  • 图床搭建,使用typora上传
  • 低代码开发的优势是什么?
  • Ip2Resion线上部署报数据越界及错误处理
  • 致敬我的C++启蒙老师,跟着他学计算机编程就对了 (文末赠书5本)
  • CSS中的伪元素和伪类
  • 逻辑优化基础-rewrite
  • 案例27-单表从9个更新语句调整为2个
  • Wordpress paid-memberships-pro plugins CVE-2023-23488未授权SQLi漏洞分析
  • 【JavaWeb篇】JSTL相关知识点总结
  • 【蓝桥杯刷题】坑爹的负进制转换
  • react+antdpro+ts实现企业级项目二:Strapi及认证登陆模块