天天看點

elasticsearch搜尋推薦系列(一)之 ElasticSearch6.2.2安裝拼音插件 elasticsearch-analysis-pinyin

拼音分詞在日常生活中其實很常見,也許你每天都在用。打開淘寶看一看吧,輸入拼音”zhonghua”,下面會有包含”zhonghua”對應的中文”中華”的商品的提示:

elasticsearch搜尋推薦系列(一)之 ElasticSearch6.2.2安裝拼音插件 elasticsearch-analysis-pinyin

elasticsearch-analysis-pinyin 是 ElasticSearch的拼音插件,強大的功能支援拼音等的搜尋。

拼音分詞是根據輸入的拼音提示對應的中文,通過拼音分詞提升搜尋體驗、加快搜尋速度。下面介紹如何在Elasticsearch 6.2.2中配置elasticsearch-analysis-pinyin

1、下載下傳源代碼

源碼位址https://github.com/medcl/elasticsearch-analysis-pinyin

這裡我是直接使用Download ZIP方式下載下傳了源碼,裡面的readme 說的使用方法很詳細全面,完全可以參考裡面的文檔進行練習。

2、解壓到指定目錄

   下載下傳的源碼zip檔案解壓縮

3、修改源碼的pom.xml檔案

    <elasticsearch.version>6.2.2</elasticsearch.version>  修改es版本為您需要的版本号
           

這有個小插曲:我用的elasticsearch為6.2.2,看了源碼下的readme版本對照資訊後,發現沒有對應的6.2.2的版本資訊。是以我分别編譯了6.2.4和6.2.2版本的elasticsearch-analysis-pinyin插件。實測都是可以在6.2.2的elasticsearch中使用。但是如果編譯的是6.2.4版本的pinyin插件時,需要把plugin-descriptor.properties配置檔案中elasticsearch.version修改為6.2.2,否則es無法正常啟動!!!

如下圖:

elasticsearch搜尋推薦系列(一)之 ElasticSearch6.2.2安裝拼音插件 elasticsearch-analysis-pinyin

另附readme.md檔案中的版本對照圖如下:

elasticsearch搜尋推薦系列(一)之 ElasticSearch6.2.2安裝拼音插件 elasticsearch-analysis-pinyin

4、mvn打包,執行mvn install

    會在源碼目錄下生成target檔案夾,在如下目錄中找到elasticsearch-analysis-pinyin-6.2.2.zip

    elasticsearch-analysis-pinyin-master\target\releases\elasticsearch-analysis-pinyin-6.2.2.zip
           

5、将elasticsearch-analysis-pinyin-6.2.2.zip解壓縮後的内容複制到elasticsearch的plugins目錄的pinyin目錄下

     如果沒有pinyin目錄自己建立,如下圖:

elasticsearch搜尋推薦系列(一)之 ElasticSearch6.2.2安裝拼音插件 elasticsearch-analysis-pinyin

6、重新開機es,  

    ./bin/elasticsearch.bat
           

7、驗證

在kibana中輸入

GET _analyze
{
  "analyzer": "pinyin",
  "text": "劉德華"
}
           

顯示如下json資料則為安裝成功

{
  "tokens": [
    {
      "token": "liu",
      "start_offset": 0,
      "end_offset": 0,
      "type": "word",
      "position": 0
    },
    {
      "token": "de",
      "start_offset": 0,
      "end_offset": 0,
      "type": "word",
      "position": 1
    },
    {
      "token": "hua",
      "start_offset": 0,
      "end_offset": 0,
      "type": "word",
      "position": 2
    },
    {
      "token": "ldh",
      "start_offset": 0,
      "end_offset": 0,
      "type": "word",
      "position": 2
    }
  ]
}
           

繼續閱讀