添加中文分词
可以直接使用配置好的es中文版:
https://github.com/medcl/elasticsearch-rtf
可以可以自己集成中文分词组件,medcl为es写了三个中文分词插件,一个是ik的,一个是mmseg的,一个是pinyin4j的。
下面介绍这三个插件与es的集成:
1.ik与es的集成
1.1下载
1.2编译
解压下载的elasticsearch-analysis-ik-1.2.6.zip
编译
在cmd下编译
Windows开始菜单---》运行-----》cmd-----》回车
e:
cd E:\j2ee\search\中文分词器\for_es\elasticsearch-analysis-ik-1.2.6
E:\j2ee\search\中文分词器\for_es\elasticsearch-analysis-ik-1.2.6>E:\j2ee\maven\apache-maven-3.1.1-bin\apache-maven-3.1.1\bin\mvn package
1.3配置
1.3.1在%ES_HOME%目录下新建目录/plugins/analysis-ik
mkdir -p /usr/local/search/elasticsearch-1.3.1/plugins/analysis-ik
1.3.2将elasticsearch-analysis-ik-1.2.6.jar拷贝到目录/usr/local/search/elasticsearch-1.3.1 /plugins/analysis-ik下
1.3.3将解压elasticsearch-analysis-ik-1.2.6.zip后的config/ik目录拷贝到/usr/local/search/elasticsearch-1.3.1 /config/目录下
1.3.4修改elasticsearch.yml
vi /usr/local/search/elasticsearch-1.3.1 /config/elasticsearch.yml
index:
analysis:
analyzer:
ik:
alias: [news_analyzer_ik,ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
index.analysis.analyzer.default.type : "ik"
1.3.5IKAnalyzer.cfg.xml
可以在/usr/local/search/elasticsearch-1.3.1/config/ik /IKAnalyzer.cfg.xml中配置一些扩展的词库字典,以及一些停用词词库字典
vi /usr/local/search/elasticsearch-1.3.1/config/ik /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/mydict.dic;custom/single_word_low_freq.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
</properties>
<!DOCTYPE properties SYSTEM " http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
</properties>
1.3.6
重启es
/usr/local/search/elasticsearch-1.3.1/bin/service/elasticsearch stop
/usr/local/search/elasticsearch-1.3.1/bin/service/elasticsearch start
1.4测试
1.4.1创建mapping,指定使用中文分词器
/**
* 创建类型映射关系,使用中文分词器
* 注意:在定义mapping之前,需要先创建一个index库
* @param client
* @throws IOException
*/
public static void mapping4CN(Client client) throws IOException{
XContentBuilder mapping=XContentFactory.jsonBuilder().startObject().startObject("fulltext")
.startObject("_all").field("indexAnalyzer","ik").field("searchAnalyzer","ik").f