概述

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个 词,比如 “你好世界” 会被分为”你”,”好”,”世”,”界”,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。

如果要使用中文,建议使用ik分词器! IK提供了两个分词算法:ik_smartik_max_word,其中 ik_smart 为最少切分,ik_max_word为最细粒度划分!一会我们测试!

下载安装

https://github.com/medcl/elasticsearch-analysis-ik/releases

选择和对应Elasticsearch的版本进行下载(我这里使用的是7.6.2)

image-20201117111058168

下载完成后直接把它放在elasticsearch的plugins目录下解压即可。我重新命名为ik

image-20201117111202921

image-20201117112146112

注意plugins不能存在其他不是插件的文件,例如zip。接着重启Elasticsearch

image-20201117114515716

可以看到已经把这个ik插件加载了。

测试

使用kibana来进行测试。

ik_smart:会做最粗粒度的拆分,例如中华人民共和国人民大会堂,即使字典里存在中华,人民,中华人民,但是中华人民共和国命中最多,所以使用,同理查出人民大会堂。

image-20201117151348756

ik_max_word:会将文本做最细粒度的拆分,穷尽字典词库的可能!

image-20201117151334178

但是当我们想搜索一个耗子为汁时,结果却不如人意

image-20201117153629145

词典里并没有这个词,所以没有达到我们想要的效果。于是我们需要自定以词典。我们在ik分词器的目录下进入config目录,打开IKAnalyzer.cfg.xml

image-20201117153809905

这就是我们的配置文件

image-20201117153853325

根据提示我们可以在这个目录里创建一个自定义的字典.dic文件

image-20201117154052252

字典里加入我们想要的词。

image-20201117154116804

接着配置ik配置文件

image-20201117155214316

重启Elasticsearch和Kibana,可以看到已经成功我们自定义的字典了

image-20201117154841394

接着接着测试查询效果

image-20201117155735492

image-20201117155803288

以后的话,我们需要自己配置分词就在自己定义的dic文件中进行配置即可!