1. 什么是IK分词器?
我们在使用百度搜索引擎的时候,经常会发现有一些标红的关键词,这些被标记的关键词分的还是非常精准的:
这里对中文进行分词使用的就是IK分词器
技术,所谓分词就是将一段文字划分为一个个的关键字,在搜索的时候会把搜索的文字进行分词,对文档中的数据也进行分词,然后会将分词后的关键字进行匹配,默认的中文分词是将每个字作为一个词,比如好好学习
使用中文分词器拆分之后就是好
、好
、学
、习
。这种分词器显然不够优秀,而IK分词器提供了两种分词算法:ik_smart
和ik_max_word
。要使用IK分词器
,首先需要下载GitHub所有版本下载地址,将下载好得ik分词器放到elasticsearch
的plugins
目录下:
注意:IK分词器与elasticsearch存在兼容问题,所以下载的ik分词器需要与当前的elasticsearch版本一致
Ik分词器7.6.2版本下载 提取码:3bfr
将下载好得ik分词器放到elasticsearch得plugin目录下之后,启动es,我们会看到es会自动加载ik分词器:
打开kibana的开发工具:
测试两种不同的分词算法:
2. ik_smart 分词算法
ik_smart
(最少切分)
3. ik_max_word 分词算法
ik_smart
(最细粒度切分)
两种分词算法个人感觉ik_smart
相当于就是一个最粗粒度划分,而ik_max_word
是最细粒度划分
4. 如何自定义词库
ik分词器可以支持自定义词库,比如我们想让分词器识别“明我”,就需要自定义一个词库:
- 在ik分词器的config下面新建一个
my.dic
文件,文件中编辑输入明我
- 修改
IKAnalyzer.cfg.xml
<?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">my.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
然后重启elasticsearch进行测试:未自定义词库前的分词:
使用自定义词库之后的分词:
可以看到分词器将明我
识别为一个词。说明使用自定义词库成功。