ElasticSearch7.x入门教程之中文分词器 IK(二)

发布于:2024-11-29 ⋅ 阅读:(38) ⋅ 点赞:(0)


前言

ElasticSearch 核心功能就是数据检索,首先通过索引将文档写入 es。
查询分析则主要分为两个步骤:

  • 1、词条化:分词器将输入的文本转为一个一个的词条流。
  • 2、过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。

我们可使用内置分词器、第三方、或自定义分词器。


一、内置分词器

内置分词器说明:

分词器 标识 作用
Standard Analyzer standard 标准分词器,适用于英语等
Simple Analyzer simple 简单分析器,基于非字母字符进行分词,单词会被转换为小写字母
Whitespace Analyzer whitespace 空格分词器,按照空格进行切分
Stop Analyzer stop 类似于简单分词器,但是增加了停用词的功能
KeyWord Analyzer keyword 关键分词器,输入文本等于输出文本
Pattern Analyzer pattern 利用正则表达式对文本切分,支持停用词
Language Analyzer 多种西语系arabic, brazilian, catalan, english等 一组旨在分析特定语言文本的分析切分
Fingerprint Analyzer - 指纹分析仪分词器,通过创建标记进行重复检测

二、中文IK分词器(第三方)

在 Es 中,使用较多的中文分词器是 elasticsearch-analysis-ik,这个是 es 的一个第三方插件,代码托管在 GitHub 上:https://github.com/medcl/elasticsearch-analysis-ik

两种使用方式:

  • 1、直接运行ES提供的命令:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
  • 2、下载安装

首先打开分词器官网:https://github.com/medcl/elasticsearch-analysis-ik。

然后在 https://github.com/medcl/elasticsearch-analysis-ik/releases 页面找到最新的正式版,下载下来。我们这里的下载链接是:
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

然后将下载文件解压。

然后在 es/plugins 目录下,新建 ik 目录,并将解压后的所有文件拷贝到 ik 目录下。

最后重启es即可。

IK分词器有两种:

分词器 标识 描述 分词对象 结果
ik_smart ik_smart ik分词器中的简单分词器,支持自定义字典,远程字典 今天星期一 [今天,星期一]
ik_max_word ik_max_word ik_分词器的全量分词器,支持自定义字典,远程字典 学如逆水行舟 [今天,星期一,星期,一 ]

三、本地自定义

在 es/plugins/ik/config 目录下,新建 ext.dic 文件(文件名任意),在该文件中可以配置自定义的词库。
在这里插入图片描述
添加自定义的词:
在这里插入图片描述
然后配置扩展词典的位置:
vim IKAnalyzer.cfg.xml
在这里插入图片描述
最后重启ES即可。

四、远程词库

也可以配置远程词库,远程词库支持热更新(不用重启 es 就可以生效)。

热更新只需要提供一个接口,接口返回扩展词即可。

具体使用方式如下,新建一个 Spring Boot 项目,引入 Web 依赖即可。然后在 resources/stastic 目录下新建 ext.dic 文件,写入扩展词:
在这里插入图片描述
接下来,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置远程扩展词接口:
在这里插入图片描述
配置完成后,重启 es ,即可生效。

热更新,主要是响应头的 Last-Modified 或者 ETag 字段发生变化,ik 就会自动重新加载远程扩展。


总结

以上就是ES涉及到的分词器支持情况,更多详情可以查看官网。