天天看点

ElasticSearch7.x系列--IK分词器介绍

先赞后看,养成习惯 🌹

欢迎微信关注:Java编程之道

每天进步一点点,沉淀技术分享知识。

IK分词器的使用

ES相关的文章,不打算给大家分享restful api等操作,百度上已经有很多,如有不懂自行百度,毕竟只是一个熟能生巧的过程。但是对于IK分词器这一块我觉得还是可以简单说一下,但也不做过多深究,对于ES来说只是一个插件工具,会用就行。

因为我最近在做ES容器日志收集平台开发所以会大量学习和ES相关知识,陆续会记录下来,知识落地心里才踏实…

在我们安装了Kibana后,我们使用Kibana的开发工具来进行测试,因为这个工具提供了自动填充功能,相比于postman或者head更加智能。

强烈建议入手Kibana!

ElasticSearch7.x系列--IK分词器介绍

可以发现es的默认分词器无法识别中文中

农业

银行

这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求。

我们这次加入新的参数

"analyzer":"ik_max_word"

  • ik_max_word:会将文本做最细粒度(拆到不能再拆)的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌」,会穷尽各种可能的组合
  • ik_smart:会将文本做最粗粒度(能一次拆分就不两次拆分)的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、国歌」
ElasticSearch7.x系列--IK分词器介绍

我们再查询一个字典中可能不存在关键字:

爱唠嗑的阿磊

ElasticSearch7.x系列--IK分词器介绍

仅仅可以得到每个字的分词结果,我们需要做的就是使分词器识别到

爱唠嗑的阿磊

也是一个词语。

因为我已经把Docker镜像挂载到宿主机,所以我只需要进入plugins文件夹下的ik文件夹,进入config目录,创建

mycustom.dic

文件,写入

爱唠嗑的阿磊

。同时打开

IKAnalyzer.cfg

文件,将新建的

mycustom.dic

配置其中,重启es。(没有使用Docker部署同学,请自行类比)

ElasticSearch7.x系列--IK分词器介绍

修改配置信息

Copy<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典 -->
	<entry key="ext_dict">mycustom.doc</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
           

再次查询发现es的分词器可以识别到

爱唠嗑的阿磊

ElasticSearch7.x系列--IK分词器介绍

就说这么多了,毕竟只是一个插件!