什么是IK分词器?

分词:把一段中文或者别的划分成一个一个的关键字,我们在搜索的时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如"我爱魏一鹤"会被分成"我",“爱”,“魏”,“一”,“鹤”,这显然是不符合要求的,索引我们需要安装中文分词器IK来解决这个问题
如果要使用中文,建议使用ik分词器
IK提供了两个分词算法,ik_smart和ik_max_world,其中ik_smart为最少切分,ik_max_wold为最细颗粒度划分,一会都会分别来测试

下载IK分词器

下载网址:https://github.com/medcl/elasticsearch-analysis-ik

hanlp 分词器 ik 分词器_elasticsearch


下载到本地,放入es插件中即可,这里我在es的plugins目录下创建一个IK目录

hanlp 分词器 ik 分词器_大数据_02


解压缩,目录如下

hanlp 分词器 ik 分词器_hanlp 分词器_03


然后重启观察ES

注意:没有使用ik分词器插件的时候黑窗口会提示no plugins loaded(没有插件加载)

hanlp 分词器 ik 分词器_hanlp 分词器_04


我们也可以使用命令(elasticsearch-plugin list)查看es下的全部加载的插件

hanlp 分词器 ik 分词器_hanlp 分词器_05

elasticsearch-plugin list

hanlp 分词器 ik 分词器_hanlp 分词器_06


使用KIbana测试IK分词器打开开发工具台

hanlp 分词器 ik 分词器_hanlp 分词器_07

ik_smart 最少分词器

分词结果比较少

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "中国共产党"
}

hanlp 分词器 ik 分词器_分词器_08

ik_max_word 颗粒度最细分词器

分词结果比较多,组成各种结果,穷尽词库的可能!

hanlp 分词器 ik 分词器_搜索引擎_09


再看个例子,把我们的句子换成 超级喜欢魏一鹤学习Java

首先看最少分词

hanlp 分词器 ik 分词器_分词器_10


然后是最细颗粒度分词

hanlp 分词器 ik 分词器_搜索引擎_11


问题来了 我们输入超级喜欢魏一鹤学习Java,发现魏一鹤被拆开了,这种需要自己加入到分词器字典中的词如何处理呢?

IK分词器自定义词汇

找到并且打开IKAnalyzer.cfg分词器配置文件

hanlp 分词器 ik 分词器_hanlp 分词器_12


自己自定义新建一个dic文件,一个dic就算一个字典,ik自带的字典是远远不够用的,我们需要手动去创建字典

hanlp 分词器 ik 分词器_大数据_13


新增字典项内容并且保存

hanlp 分词器 ik 分词器_hanlp 分词器_14


然后把我们自定义配置的字典加入到配置文件让字典生效

hanlp 分词器 ik 分词器_elasticsearch_15


配置完之后保存,然后重启es,注意观察,在重启es的时候会发现黑窗口已经加载我们自定义的字典weiyihe.dic

hanlp 分词器 ik 分词器_分词器_16


重启kibana,再次测试使用过自定义字典之后魏一鹤是否被分割不管是哪种分词,魏一鹤都没被分割!说明我们自定义字典配置成功!

hanlp 分词器 ik 分词器_hanlp 分词器_17


以后需要什么词汇,直接在我们的weiyihe.dic字典中去定义即可使用