Elasticsearch - ik分词器

一、前言

之所以要在elasticsearch中要使用ik这样的中文分词,是因为es提供的分词是英文分词,对于中文分词不友好,因此我们需要一个中文分词器来用于搜索和使用。

默认使用standard分词器

自带分词器分词效果

二、ik分词器安装以及使用

2.1 安装

通过github复制es对应版本的链接

定位到/usr/share/elasticsearch/bin/elasticsearch-plugin程序,然后执行其install命令。
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.4.1/elasticsearch-analysis-ik-8.4.1.zip
期间会询问是否真的要安装对应插件,输入y。
安装完成后,将在plugins/analysis-ik/下生成文件并且在/etc/elasticsearch/analysis-ik下生成配置文件

2.2使用

2.2.1 IK分词器的两种模式:
  • ik_smart:最少切分,粗粒度,分词不够细,文档没有那么容易给搜索到,但占用内存少,可以缓存更多的数据,查询效率更高一点。
  • ik_max_word:最细切分,细粒度,分词够细,文档容易给搜索到,但占用内存大。
2.2.2 使用ik_smart模式:

2.2.3 使用ik_max_word模式:

三、分词器扩展以及停用

3.1 背景:

分词器底层应该是依赖于一个字典,但这个字典中的词汇,肯定不可能涵盖我们生活中所有的词汇,而且我们使用了很多新生的词汇,这些词汇在字典中查不到的时候,分词器就会逐个字逐个字的分词,这个时候就需要对分词器进行拓展。但比如“的”这些字眼也会给分词出来,无意义且占空间,所以应该停用这种分词。

3.2分词器的拓展


编辑ext.dic文件,添加想要拓展的词语即可:

vim ext.dic
ext.dic需自己创建,文件位置: IKAnalyzer.cfg.xml同个目录下

未添加拓展词"禅道"前

vim ext.dic
多个词语换行分隔

保存并重启elastic服务

添加拓展词"禅道"后的效果

3.3 停用字典

未添加停用词"的"前的效果

每次修改文件后需重启elastic服务

添加停用词"的"后的效果,过滤了“的”

4、总结:

posted @ 2023-10-18 17:04  Myifb  阅读(259)  评论(0)    收藏  举报