elasticsearch 安装ik分词器及自定义分词库的
一.es 安装ik分词器(6.0.0)
1.场景描述:
Elasticsearch中,内置了很多分词器(analyzers),例如standard
(标准分词器)、english
(英文分词)和chinese
(中文分词)。其中standard
就是无脑的一个一个词(汉字)切分,所以适用范围广,但是精准度低;english
对英文更加智能,可以识别单数负数,大小写,过滤stopwords(例如“the”这个词)等;chinese
效果很差。
使用es 自带的分词standard,分成单个词,比如桂林山水超漂亮,会如下图分成 桂,林,山,水,超,漂,亮,而我们实际上想得到一些词组。
2.具体操作
es集成ik有非常详细的一对一的版本,不像solr 4.x之后没有对应的ik版本,需要额外的一些包才可以完成ik的集成,es在这一点上显得简单很多。
es集成git的压缩包地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
选择和es版本对应的
es 集成ik主要有两种方式
(1)借助es的plugin工具,在elasticsearch的根目录下
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.0.0/elasticsearch-analysis-ik-6.0.0.tar.gz
(2).先从git下载ik的包,然后解压,如果linux下载了zip格式的,可以yum install zip,再
解压unzip ik-XX.zip,解压之后是一个elasticsearch的文件夹,把这个文件夹拷贝到elasticsearch-6.0.0/plugins/ 下
重启es即可
关于ik分词中的analyzer
ik的analyzer只有ik_smart和ik_max_word,ES5.0之后的ik_smart和ik_max_word说明
ik_max_word:
会将文本做最细粒度的拆分,比如会将“桂林山水超漂亮”拆分为“桂林山水,桂林,山水,超,漂亮”,会穷尽各种可能的组合。
ik_smart:
会做最粗粒度的拆分,比如会将“桂林山水超漂亮”拆分为“桂林山水,超,漂亮”。参考步骤2的截图
3.加载自定义分词
进入elasticsearch-6.0.0/plugins/elasticsearch/config ,修改IKAnalyzer.cfg.xml ,如qit_word.dic是我定义的字典,字典中定义一个词‘桂林山水超漂亮’
重启es,进行分词,就发现“桂林山水超漂亮”分成了一个词
参考:https://blog.****.net/mjwwjcoder/article/details/79104859