Elasticsearch 1.X 安裝中文分詞 plugin ik

使用 ik 去拆解「一個澳門人」

注意:以下是 elasticsearch 1.X 的方法,2.X 版這按這裏


首先,我先重新一次這篇只包括不使用rtf版、只在原廠版的 elasticsearch 1.X 中安裝 ik 方法。使用ik方法可以看原本的 github,或者上網找,因為真的有很多。

那,為甚麼要寫這篇只有安裝的教學文呢?因為,網上很多教學的安裝方法或者是不完整,或者是錯誤的,例如叫你直接用 plugin 去安裝,但你最後只會收到這個錯誤:

(不要學!)
sudo ./plugin -install medcl/elasticsearch-analysis-ik

Message:
   Error while installing plugin, reason: IllegalArgumentException: Plugin installation assumed to be site plugin, but contains source code, aborting installation.


因此,大家不要再和我一起重覆上面這個錯誤方法了。

一直找其他方法,但原來真的可以不用那麼麻煩,既然rtf版已經處理好了,而且還有繁體中文支援,那麼,一切是可以這麼的簡單:

  1. 首先,下載rtf版,解壓。
  2. 複製config和ik的jar檔,在 ubuntu 或 centos 中:

    - 在 /usr/share/elasticsearch/plugins/ 中,把 elasticsearch-rtf/plugins/analysis-ik 複製過去

    - 在 /etc/elasticsearch 中,把 elasticsearch-rtf/config/ik/ 複製過去
  3. 修改 elasticsearch.yml (在 ubuntu 或 centos 中是 /etc/elasticsearch/elasticsearch.yml),增加這些config,可以加在最底
    index:
      analysis:
        analyzer:
          ik:
              alias: [news_analyzer_ik,ik_analyzer]
              type: org.elasticsearch.index.analysis.IkAnalyzerProvider
          ik_max_word:
            type: ik
            use_smart: false
          ik_smart:
            type: ik
            use_smart: true
    
              
    index.analysis.analyzer.default.type : "ik"
    
  4. restart elasticsearch
完成!

PS:這樣 analyzer 可以使用 ik、ik_max_word 兩種方法,其中 ik 是盡量組合成一個詞(例如「澳門人」就是「澳門人」,不會拆成「澳門」、「門人」、「澳門人」),而 ik_max_word 則是可以拆就盡量拆,大家可以按自己需要,自行選擇最適合方法。

使用 ik_max_word 去拆解「一個澳門人」,多出很多組合

留言

這個網誌中的熱門文章

如何在ubuntu中compile kernel(12.10)

如何在linux kernel 3.7中加入system call