ES官方只支持smartcn这个中文分词插件,是按照单个字进行索引。前端产品搜索时,凡是带这个关键字的都会被索引到。打个比方:搜索"苹果"关键词,凡是包含"苹"和"果"的title都会被索引到。所以为了这个需求,找一个第三方的中文分词插件.看了一下,国内有几款中分分词插件:ik、ansj和mmseg。最后我选择使用了ik。
ES1.4 下安装ik,碰到了不少坑。最后终于搞定,所以分享一下ik的安装步骤。
1. 下载es源代码,然后进行编译,将相应jar包复制到$ES_HOME/plugins/目录下。
2. 下载ik配置文件,复制到$ES_HOME/config/目录下。
3.修改elasticsearch.yml配置文件
4.测试ik
1.首先下载es源代码,并进行编译wget --no-check-certificate
unzip master.zip
cd elasticsearch-analysis-ik-master
mvn clean install -Dmaven.test.skip=true #编译过程,需要下载相应的jar包。所以喝一杯咖啡,慢慢等待...
将编译后的elasticsearch-analysis-ik-1.2.9.zip,解压缩,复制到$ES_HOME/plugins目录
相应jar包:
2. 下载ik配置文件,复制到$ES_HOME/config/目录下
https://github.com/davidbj/elasticsearch-rtf/archive/master.zip
unzip master.zip
将解压目录config/ik文件夹复制到$ES_HOME/config目录下
3. 更改$ES_HOME/config/elasticsearch.yml 配置文件index:
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
ik_max_word:
type: ik
use_smart: false
ik_smart:
type: ik
use_smart: true
#或
index.analysis.analyzer.ik.type : “ik”
最后重启elaticsearch服务
4.测试:
curl -XPOST "
测试结果如下
{
tokens: [
{
token: text
start_offset: 2
end_offset: 6
type: ENGLISH
position: 1
}
{
token: 我
start_offset: 9
end_offset: 10
type: CN_CHAR
position: 2
}
{
token: 中国人
start_offset: 11
end_offset: 14
type: CN_WORD
position: 3
}
{
token: 中国
start_offset: 11
end_offset: 13
type: CN_WORD
position: 4
}
{
token: 国人
start_offset: 12
end_offset: 14
type: CN_WORD
position: 5
}
]
}
至此,es 的ik 插件已经安装配置完成~
更多详细信息,请查看官方文档:https://github.com/awnuxkjy/es-ik