Elasticsearch安装分词插件[ES系列] - 第499篇

news/2024/7/7 5:54:10 标签: elasticsearch, 大数据

历史文章(文章累计490+)

国内最全的Spring Boot系列之一

国内最全的Spring Boot系列之二

国内最全的Spring Boot系列之三

国内最全的Spring Boot系列之四

国内最全的Spring Boot系列之

国内最全的Spring Boot系列之六

ElasticSearch应用场景以及技术选型[ES系列] - 第496篇

ElasticSearch详细搭建以及常见错误high disk watermark [ES系列] - 第497篇

Elasticsearch可视化平台Kibana [ES系列] - 第498篇

悟纤:师傅,我发现我在解决问题时总是很慢,怎么办呢?

师傅:不要着急。首先你要明白,解决问题需要时间和耐心。你可以尝试将问题分解成更小的部分,然后一步一步地去解决。

悟纤:分解问题?能具体说说怎么做吗?

师傅:当然。比如说,你可以将一个大问题拆分成几个小问题,然后逐一解决。或者,你可以将问题按照紧急程度和重要性进行分类,优先解决重要的问题。

悟纤:这样确实有帮助。那么,还有其他方法可以提升我的问题解决速度吗?

师傅:当然。你可以通过练习来提高你的问题解决速度。你可以找一些类似的问题进行练习,这样可以帮助你更好地掌握解决问题的方法和技巧。

悟纤:我明白了,师傅。我会尝试这些方法的。

师傅:很好,徒儿。记住,解决问题的关键在于思考和行动。只要你不断地思考和尝试,你一定能够提高你的问题解决速度。

导读

Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。

分词器接受一个字符串作为输入,将 这个字符串拆分成独立的词或 语汇单元(token) (可能会丢弃一些标点符号等字符),然后输出一个 语汇单元流(token stream)

一、ES内置分词器

事实上,ElasticSearch中有一些内置分词器:

Standard 分词器:默认分词器,会将词汇单元转成小写形式并且去除停用词和标点符号,支持中文采用的方法为单字切分。

Simple 分词器:首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分词器会去除掉数字类型的字符。

Whitespace 分词器:仅仅是去除空格,对字符没有lowcase化,不支持中文;并且不对生成的词汇单元进行其他标准化处理。

Stop 分词器:相比Simple Analyzer多了去除请用词处理,停用词指语气助词等修饰性词语,如the, an, 的, 这等

Keyword 分词器:不分词,直接将输入作为一个单词输出

Pattern 分词器:通过正则表达式自定义分隔符,默认是\W+,即非字词的符号作为分隔符

Language 分词器:特定语言的分词器,不支持中文。如 english 、french 和 spanish 分析器。

应该说,standard 分词器是大多数西方语言分词的一个合理的起点。 事实上,它构成了大多数特定语言分析器的基础,如 english 、french 和 spanish 分析器。 它也支持亚洲语言,只是有些缺陷(=.=To Be Honest , 你输入任何中文,都会被拆成一个一个的文字来分词,简直不要太糟糕),你可以考虑通过 ICU 插件的方式使用 icu_analyzer 进行中文分词更合理。

二、ICU 分析器插件

Elasticsearch的 ICU 分析器插件 使用 国际化组件 Unicode (ICU) 函数库提供丰富的处理 Unicode 工具。 这些包含对处理亚洲语言特别有用的 icu_分词器 ,还有大量对除英语外其他语言进行正确匹配和排序所必须的分词过滤器。

ICU 插件是处理英语之外语言的必需工具,非常推荐你安装并使用它,不幸的是,因为是基于额外的 ICU 函数库, 不同版本的ICU插件可能并不兼容之前的版本,当更新插件的时候,你需要重新索引你的数据(=。=根据你的ES版本替换后面的版本号,是6.8.1,则用6.8.1,你用7.3.0就用7.3.0,类推)。

2.1在线安装analysis-icu分词插件

安装命令如下:

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em>#查看已安装插件</em></span></code><code>bin/elasticsearch-plugin list</code><code><span style="color:#afafaf"><em>#安装插件</em></span></code><code>bin/elasticsearch-plugin <span style="color:#ca7d37">install</span> analysis-icu</code><code><span style="color:#afafaf"><em>#删除插件</em></span></code><code><span style="color:#ca7d37">bin</span>/elasticsearch-<span style="color:#ca7d37">plugin</span> remove analysis-icu</code><code>​</code></span></span>

特别说明:这里要求是bin/这样的写法,不然插件无法安装到目录plugins下。

其它说明:安装和删除完插件后,需要重启ES服务才能生效。

使用kibana测试分词效果:

<span style="color:#333333"><span style="background-color:#fafafa"><code>POST _analyze</code><code>{</code><code><span style="color:#dd1144">"analyzer"</span>:<span style="color:#dd1144">"icu_analyzer"</span>,</code><code><span style="color:#dd1144">"text"</span>:<span style="color:#dd1144">"中华人民共和国"</span></code><code>}</code><code>​</code></span></span>

看右边的分词效果还不错。

2.2离线安装ik中文分词插件

本地下载elasticsearch-analysis-ik-x.x.x.zip插件,解压,

然后手动上传到elasticsearch的plugins目录,然后重启ES实例就可以了。

ik中文分词插件:

https://github.com/medcl/elasticsearch-analysis-ik

https://github.com/xiaoxinda/elasticsearch-analysis-ik/releases

<span style="color:#333333"><span style="background-color:#fafafa"><code><span style="color:#afafaf"><em>#ES的默认分词设置是standard,会单字拆分</em></span></code><code>POST _analyze</code><code>{</code><code>    <span style="color:#dd1144">"analyzer"</span>:<span style="color:#dd1144">"standard"</span>,</code><code>    <span style="color:#dd1144">"text"</span>:<span style="color:#dd1144">"中华人民共和国"</span></code><code>}</code><code>​</code><code><span style="color:#afafaf"><em>#ik_smart:会做最粗粒度的拆</em></span></code><code>POST _analyze</code><code>{</code><code>    <span style="color:#dd1144">"analyzer"</span>: <span style="color:#dd1144">"ik_smart"</span>,</code><code>    <span style="color:#dd1144">"text"</span>: <span style="color:#dd1144">"中华人民共和国"</span></code><code>}</code><code>​</code><code><span style="color:#afafaf"><em>#ik_max_word:会将文本做最细粒度的拆分</em></span></code><code>POST _analyze</code><code>{</code><code>    <span style="color:#dd1144">"analyzer"</span>:<span style="color:#dd1144">"ik_max_word"</span>,</code><code>    <span style="color:#dd1144">"text"</span>:<span style="color:#dd1144">"中华人民共和国"</span></code><code>}</code><code>​</code></span></span>

字段说明:

(1)token:分词

(2)start_offset:分词起始位置

(3)end_offset:分词结束位置

(4)type:

(5)position:记录单词在文档中的分词位置(多个),用于做词语搜索(Phrase Query)

特别说明:对于字段start_offset和end_offset主要用于高亮显示。

• 阿里巴巴前高级研发工程师

• 三家千万级互联网企业技术顾问

• MBTI/盖洛普技术专家

• 厦门某高校外聘教师

• 51CTO特约合作讲师

• 网易云课堂签约讲师

•《深入理解设计模式》作者


http://www.niftyadmin.cn/n/5327318.html

相关文章

OpenAI支持的实体机器人1x,获1亿美元融资

智能实体机器人1X在官网宣布&#xff0c;获得1亿美元B轮融资&#xff0c;本次由EQT Ventures、三星NEXT等投资。 资料显示&#xff0c;1X成立于2014年&#xff08;当时叫Halodi Robotics&#xff09;&#xff0c;总部位于挪威-莫斯。虽然成立时间很早&#xff0c;但发展并不顺…

实践学习PaddleScience飞桨科学工具包

实践学习PaddleScience飞桨科学工具包 动手实践&#xff0c;在实践中学习&#xff01;本项目可以在AIStudio平台一键运行&#xff01;地址&#xff1a;https://aistudio.baidu.com/projectdetail/4278591 本项目第一次执行会报错&#xff0c;再执行一次即可。若碰到莫名其妙的…

AMC8历年详细考点分类,都熟悉了考高分不成问题(2024年也适用)

还有四天&#xff0c;2024年AMC8美国数学思维活动&#xff08;竞赛&#xff09;就要正式开始了&#xff0c;这两天有多位家长咨询六分成长&#xff0c;想了解AMC8的主要考点&#xff0c;或者说经常考的内容。 根据2000-2023年这23年的真题分析&#xff0c;AMC8试题的考点可以分…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用短曝光功能1.引用合适的类文件2.通过NEOAPI SDK使用短曝光功能3.通过NEOAPI SDK关闭短…

Qt QGraphicsItem获取鼠标位置对应图像坐标

本次使用了QGraphicsView来加载图像&#xff0c;然后给其设置了一个QGraphicsScene场景&#xff0c;再给场景添加了一个自定义的QGraphicsItem&#xff0c;在其中重写了paint事件&#xff0c;用来重绘图像。 正常情况时&#xff0c;QGraphicsItem上图像的有效区域QRect大小和QG…

架构简介,到底什么是架构?

1. 前言 对技术人员来说&#xff0c;“架构”是一个再常见不过的词儿了。我们经常对新员工培训整个系统的架构&#xff0c;参加架构设计评审&#xff0c;学习业界开源系统&#xff08;例如&#xff0c;MySQL、Hadoop&#xff09;的架构&#xff0c;研究大公司的架构实现&#…

基于Ubuntu22.04部署生产级K8S集群v1.27(规划和核心组件部署篇)

本文档主要根据k8s官网文档和其插件的官网文档&#xff0c;参考部分他人优秀经验&#xff0c;在实际操作中逐渐完成&#xff0c;比较详尽&#xff0c;适合在境内学习者和实践者参考。 实操环境基于VMware Workstation 17 pro&#xff0c;采用ubuntu22.04操作系统&#xff08;有…

java+vue基于Spring Boot的渔船出海及海货统计系统

该渔船出海及海货统计系统采用B/S架构、前后端分离进行设计&#xff0c;并采用java语言以及springboot框架进行开发。该系统主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、渔船信息、渔船航班、海货价格、渔船海货、非法举报、渔船黑名单等功能。该系统操…