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

发布时间:2024年01月08日

历史文章(文章累计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中有一些内置分词器:

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

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

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

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

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

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

l?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特约合作讲师

? 网易云课堂签约讲师

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

文章来源:https://blog.csdn.net/linxingliang/article/details/135458887
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。