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

相關文章
相關標籤/搜索