因为Elasticsearch中默认的标准分词器(analyze)对中文分词不是很友好,会将中文词语拆分成一个一个中文的汉字,所以引入中文分词器-IK。
使用默认
注意 一定要下载和Elastic版本相同的IK分词器
cd /usr/local/elasticsearch/plugins/ik/
unzip elasticsearch-analysis-ik-XX.zip
# windos下安装也是一样的操作
重启的时候在日志中就可以看到关于IK分词器已经被加载进去了
会做最粗粒度的拆分,比如会将“我是中国人”拆分为我、是、中国人。
POST _analyze
{
"analyzer": "ik_smart",
"text": "我是中国人"
}
会将文本做最细粒度的拆分,比如会将“我是中国人”拆分为“我、是、中华、中国人、中国、国人
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
在利用ik分词的过程中,当ik的分词规则不满足我们的需求了,这个时候就可以利用ik的自定义词库进行匹配,比如最火的常用的网络用语;我们输入乔碧罗殿下正常的情况下,是不会识别整个词语的,返回的都是分开的。我们识别整个词语就需要自定义词库
创建目录 mkdir ciku
创建文件 vim test.dic
#编辑test.dic 注意每个词语一行
vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
vim fenci.txt
#每个词语一行
vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
我们输入乔碧罗殿下正常的情况下,是不会识别整个词语的,返回的都是分开的。当我们在词库文件中写上乔碧罗殿下就会返回下面的效果
原文:https://www.cnblogs.com/dupengpeng/p/15155674.html