elasticsearch中默认分词为standard分词,根本无法满足中文分词的需要,需要另行安装中文分词插件。
安装ik分词器过程如下:
一、下载安装IK分词插件
ik分词插件 https://github.com/medcl/elasticsearch-analysis-ik/ (github地址)./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip
可将v6.2.3 替换为你所使用的elasticsearch版本。
二、重启ES
ps -ef | grep elasticsearch
kill -9 {pid}
./bin/elasticsearch -d
看下ik的分词效果 ,"中华人民共和国"能被准确的分为 "中华人民共和国" 、 "中华人民"、"中华"、"华人" 、"人民共和国" 等
下面这个例子中,ik分词器不能按照我们的意愿正确的分析出。
"屌丝公寓" 中屌丝被分为了两个词 。这种网络流行词汇ik无法准确的切分出,如确需分出就需要我们来自定义词库了 。
三、扩展自定义词库
删除 elasticsarch/config/目录下的analysis-ik ,在elasticsearch/plugins/analysis-ik/ 中 创建config目录,再在这个config目录中新建IKAnalyzer.cfg.xml 配置文件。
cd elasticsearch/plugins/analysis-ik/
mkdir config
cd config
vi 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">custom/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>
其中 custom/my.dic 是我们后面需要新建的自定义词库文件 (每行配置一个词汇)
mkdir custom
vi my.dic 随便加入写东西,如一些网络流行词汇,
屌丝
卖萌
:x 保存
完了后,我们再次重启es, 再看下效果。
ok, 屌丝 、卖萌 都能够准确地分出了,说明我们的自定义词库已生效了。