elasticsearch IK分词器
  KRe60ogUm4le 13天前 18 0

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

elasticsearch IK分词器

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

IK分词器

安装

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

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

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

# 在线下载并安装

#退出
exit

#重启容器
docker restart es

elasticsearch IK分词器

elasticsearch IK分词器

(手动拖入)

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

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

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

elasticsearch IK分词器

elasticsearch IK分词器

使用

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

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

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

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

elasticsearch IK分词器

“ik_max_word”模式

elasticsearch IK分词器

扩展词汇&敏感词汇排除

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

elasticsearch IK分词器

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

第一步:修改配置文件

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

elasticsearch IK分词器

IKAnalyzer.cfg.xml文件内容

elasticsearch IK分词器

第二步:添加词汇

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

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

elasticsearch IK分词器

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

elasticsearch IK分词器

第三步:重启es

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

elasticsearch IK分词器

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

elasticsearch IK分词器

注意

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

elasticsearch IK分词器

在分词排除时不会排除掉,因为在分词时,这句词汇不太可能被分为一个完整的词汇,而在停用词典中,是根据完整的词汇来排除的;
elasticsearch IK分词器

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

elasticsearch IK分词器

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

elasticsearch IK分词器

总结

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

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 13天前 0

暂无评论

推荐阅读
  EUSSGZa7OA03   2023年12月23日   109   0   0 大数据大数据
KRe60ogUm4le