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

    关于elasticsearch-analysis-pinyin的介绍,就此省略,看完此文后你就会知道它有多神奇。html

1、安装git

    安装该插件的前提是你已经安装了ES(ElasticSearch),若是没有参照安装向导github

    安装该插件须要2个jar包,一个固然是elasticsearch-analysis-pinyin.jar,另外一个是pinyin4j.jar。不少网站都有下载,可是建议亲自编译elasticsearch-analysis-pinyin生成,由于这样不会有版本问题。好,下面介绍编译源码获取上述两个jar包的方法。浏览器

    一、下载源码(须要安装了git)
app

        git clone https://github.com/medcl/elasticsearch-analysis-pinyin.git curl

    二、编译(须要安装了maven)elasticsearch

        进入download下来的源码目录:cd elasticsearch-analysis-pinyin,而后执行编译命令:mvn clean install -Dmaven.test.skip。编译成功以后,你将在elasticsearch-analysis-pinyin/target目录中看到elasticsearch-analysis-pinyin的jar包,我编译完成以后,生成的jar包名称为:elasticsearch-analysis-pinyin-1.2.1.jar,而后elasticsearch-analysis-pinyin/lib目录中看到pinyin4j的jar包,个人jar包名称为:pinyin4j-2.5.0.jarmaven

    三、具体安装
ide

        在ES_HOME目录下建立一个plugins目录(若是没有的话),而后在plugins目录下建立pinyin目录,将前两个步骤中获得的jar包拷贝到ES_HOME/plugins/pinyin目录下面。ok,插件安装基本完成,easy吧!
测试

2、如何使用

    首先建议从新启动ES服务。

    一、分词测试

        (1) 建立一个测试索引:       

curl -XPUT http://localhost:9200/medcl/ -d'
{
    "index" : {
        "analysis" : {
            "analyzer" : {
                "pinyin_analyzer" : {
                    "tokenizer" : "my_pinyin",
                    "filter" : ["standard"]
                }
            },
            "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":[{"token":"liu de hua ","start_offset":0,"end_offset":3,"type":"word","position":1}]}

      


    二、使用该插件建立索引,实现上图的拼音提示功能

        (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" : ["my_pinyin"],
                    "filter" : ["standard","nGram"]
                }
            },
            "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) 建立Mapping,即索引结构以及字段配置

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:liu
http://localhost:9200/medcl/folks/_search?q=name:ldh
http://localhost:9200/medcl/folks/_search?q=name:dehua

相关文章
相关标签/搜索