ElasticSearch拼音插件elasticsearch-analysis-pinyin使用介绍

**


****http://my.oschina.net/xiaohui249/blog/214505


**ElasticSearch拼音插件elasticsearch-analysis-pinyin使用介绍

摘要 elasticsearch-analysis-pinyin是ElasticSearch的一个分词插件,能够实现拼音分词索引。本文主要介绍该插件的安装和具体使用方法。http://www.oschina.net/search?scope=blog&q=ElasticSearch http://www.oschina.net/search?scope=blog&q=pinyin4j http://www.oschina.net/search?scope=blog&q=插件

关于elasticsearch-analysis-pinyin的介绍,就此省略,看完此文后你就会知道它有多神奇。一、安装    安装该插件的前提是你已经安装了ES(ElasticSearch),如果没有参照http://www.elasticsearch.cn/guide/reference/setup/installation.html。    安装该插件需要2个jar包,一个当然是elasticsearch-analysis-pinyin.jar,另一个是pinyin4j.jar。很多网站都有下载,但是建议亲自编译elasticsearch-analysis-pinyin生成,因为这样不会有版本问题。好,下面介绍编译源码获取上述两个jar包的方法。    1、下载源码(需要安装了git)
    git clone https://github.com/medcl/elasticsearch-analysis-pinyin.git    2、编译(需要安装了maven)        进入download下来的源码目录:cd elasticsearch-analysis-pinyin,然后执行编译命令:mvn clean install -Dmaven.test.skip。编译成功之后,你将在elasticsearch-analysis-pinyin/target目录中看到elasticsearch-analysis-pinyin的jar包,我编译完成之后,生成的jar包名称为:http://pan.baidu.com/s/1sjFEjYd,然后elasticsearch-analysis-pinyin/lib目录中看到pinyin4j的jar包,我的jar包名称为:http://pan.baidu.com/s/1ntK6cmX。    3、具体安装
    在ES_HOME目录下创建一个plugins目录(如果没有的话),然后在plugins目录下创建pinyin目录,将前两个步骤中得到的jar包拷贝到ES_HOME/plugins/pinyin目录下面。ok,插件安装基本完成,easy吧!

二、如何使用 首先建议重新启动ES服务。
1、分词测试
(1) 创建一个测试索引: curl -XPUT http://localhost:9200/medcl/ -d’{ “index” : { “analysis” : { “analyzer” : { “pinyin_analyzer” : { “tokenizer” : “my_pinyin”, “filter” : } }, “tokenizer” : { “my_pinyin” : { “type” : “pinyin”, “first_letter” : “none”, “padding_char” : " " } } } }}’
(2) 通过浏览器请求分词效果 在浏览器输入http://your_es_host:9200/medcl/_analyze?text=%e5%88%98%e5%be%b7%e5%8d%8e&analyzer=pinyin_analyzer
返回结果如下,分词成功,该插件能够轻易的得到中文对应的拼音分词,然后搜索可以对输入的拼音提示对应的中文,提高搜索体验。{“tokens”:}
http://static.oschina.net/uploads/space/2014/0331/000104_IkNb_1010775.png
2、使用该插件创建索引,实现上图的拼音提示功能 (1) 创建空索引,设置分词器 curl -XPOST http://localhost:9200/medcl/_close (if you had create index ‘medcl’, do this) curl -XPUT http://localhost:9200/medcl/_settings -d’{ “index” : { “analysis” : { “analyzer” : { “pinyin_analyzer” : { “tokenizer” : , “filter” : } }, “tokenizer” : { “my_pinyin” : { “type” : “pinyin”, “first_letter” : “prefix”, “padding_char” : “” } } } }}‘curl -XPOST http://localhost:9200/medcl/_open (if you had create index ‘medcl’, do this)
(2) 创建http://www.cnblogs.com/MrHiFiy/archive/2012/12/06/2806226.html,即索引结构以及字段配置
curl -XPOST http://localhost:9200/medcl/folks/_mapping -d’{ “folks”: { “properties”: { “name”: { “type”: “multi_field”, “fields”: { “name”: { “type”: “string”, “store”: “no”, “term_vector”: “with_positions_offsets”, “analyzer”: “pinyin_analyzer”, “boost”: 10 }, “primitive”: { “type”: “string”, “store”: “yes”, “analyzer”: “keyword” } } } } }}’
(3) 开始索引数据curl -XPOST http://localhost:9200/medcl/folks/andy -d’{“name”:“刘德华”}’
(4) 检索数据
在浏览器一次输入下面的连接,你将会搜索得到上面索引的那个记录:刘德华。
http://localhost:9200/medcl/folks/_search?q=name:刘http://localhost:9200/medcl/folks/_search?q=name:刘德http://localhost:9200/medcl/folks/_search?q=name:liuhttp://localhost:9200/medcl/folks/_search?q=name:ldhhttp://localhost:9200/medcl/folks/_search?q=name:dehua
http://static.oschina.net/uploads/space/2014/0331/002234_1U9v_1010775.png