当前位置:   article > 正文

elasticsearch IK分词器_es中文分词器ik

es中文分词器ik

说明:es默认的分词器对中文的识别不是特别好,一段话的分词是一个一个汉字,这显然没有达到想要的结果。

在这里插入图片描述

可以安装IK分词器,兼容中文的分词;

IK分词器

安装

安装IK分词器,例如elasticsearch的容器名为es;

(命令方式,安装速度慢,网络状况不好非常容易失败,而且会丢失文件,不推荐使用)

# 进入容器内部
docker exec -it es /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit

#重启容器
docker restart es
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

在这里插入图片描述

(手动拖入)

可以选择在对应网站下载(注意ik版本需要和es版本一致),然后将文件拖入到es容器挂载的数据卷目录下;

# 查看es容器挂载的数据卷路径
docker volume inspect es-plugins
  • 1
  • 2

将下载下来的IK分词器文件,解压,复制到此目录下;

在这里插入图片描述

在这里插入图片描述

使用

IK分词器有以下两种模式:

  • ik_smart:最少切分,最少分词数量;

  • ik_max_word:最细切分,最多可分词数;

使用“ik_smart”模式,可以看右侧,分词是符合中文语境的;

在这里插入图片描述

“ik_max_word”模式

在这里插入图片描述

扩展词汇&敏感词汇排除

有一些人名、名牌、热词等词汇,在分词时可能会被拆分开,如“王麻子菜刀”,可能被拆分成了“王麻子”、“菜刀”,拆分之后就没有意义了。这些词汇可以添加到IK分词器的扩展字典文件中,使分词时这些词汇被作为一个完整的词划分。

在这里插入图片描述

另外,也有一些词汇是敏感词汇(政治、宗教、辱骂等等),我们希望在搜索时,这些分词不参与分词和搜索。同样这类词汇也可以添加到IK分词器的停用词典中,使这类敏感词汇不参与分词和搜索。

第一步:修改配置文件

在IK分词器目录下,切换到config目录,打开文件IKAnalyzer.cfg.xml,设置扩展词汇和排除词汇文件名;

在这里插入图片描述

IKAnalyzer.cfg.xml文件内容

在这里插入图片描述

第二步:添加词汇

分别在扩展词汇词典、停用词典添加对应的词汇

(扩展词汇文件,ext.dic,该文件不存在,需手动创建)

在这里插入图片描述

(停用词典文件,stopword.dic,新增一个词汇月亮

在这里插入图片描述

第三步:重启es

重启es,测试,可以看到分词把“毛源昌眼镜”当做一个词来划分了,达到了想要的结果;

在这里插入图片描述

同样,月亮被作停用词典中的词汇,未参与分词;

在这里插入图片描述

注意

需要注意的是,如果一个词汇是一个较为特别的词汇,如“独钓寒江雪”;

在这里插入图片描述

在分词排除时不会排除掉,因为在分词时,这句词汇不太可能被分为一个完整的词汇,而在停用词典中,是根据完整的词汇来排除的;
在这里插入图片描述

所以,做到万无一失,应该把需要排除分词的词汇,先在扩展词典里添加,然后再在停用词典里添加,这样就绝对会被排除掉了;

在这里插入图片描述

重启es,测试,“独钓寒江雪”被完全排除

在这里插入图片描述

总结

es分词对中文兼容不太好,可以选择IK分词器来使用,IK分词器有两种模式,分别是“ik_smart”、“ik_max_word”。

另外,IK分词器支持对词汇进行扩展,可以把一些需要绑定在一起的词汇,不希望被分开的词汇写入到扩展词典中,这些词汇会被当做一个整体参与分词;同样如果需要排除一些词汇,不希望这些词汇参与分词,也可以将这些词汇写入到停用词典中。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/966489
推荐阅读
相关标签
  

闽ICP备14008679号