1. 程式人生 > >IK Analyzer ES使用

IK Analyzer ES使用

https://github.com/medcl/elasticsearch-analysis-ik

Analyzer: ik_smart , ik_max_word , Tokenizer: ik_smart , ik_max_word

IK Analyzer是一個開源的,基於java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源專案Luence為應用主體的,結合詞典分詞和文法分析演算法的中文分片語件。從3.0版本開始,IK發展為面向Java的公用分片語件,獨立於Lucene專案,同時提供了對Lucene的預設優化實現。在2012版本中,IK實現了簡單的分詞歧義排除演算法,標誌著IK分詞器從單純的詞典分詞向模擬語義分詞衍化。 IK Analyzer 2012特性:

 

採用了特有的“正向迭代最細粒度切分演算法“,支援細粒度和智慧分詞兩種切分模式;

在系統環境:Core2 i7 3.4G雙核,4G記憶體,window 7 64位, Sun JDK 1.6_29 64位 普通pc環境測試,IK2012具有160萬字/秒(3000KB/S)的高速處理能力。

2012版本的智慧分詞模式支援簡單的分詞排歧義處理和數量詞合併輸出。

採用了多子處理器分析模式,支援:英文字母、數字、中文詞彙等分詞處理,相容韓文、日文字元

優化的詞典儲存,更小的記憶體佔用。支援使用者詞典擴充套件定義。特別的,在2012版本,詞典支援中文,英文,數字混合詞語。

1、IK配置檔案

ik配置檔案地址:
es/plugins/ik/config目錄下

IKAnalyzer.cfg.xml:用來配置自定義詞庫
main.dic:ik原生內建的中文詞庫,總共有27萬多條,只要是這些單詞,都會被分在一起
quantifier.dic:放了一些單位相關的詞
suffix.dic:放了一些字尾
surname.dic:中國的姓氏
stopword.dic:英文停用詞

2、ik原生最重要的兩個配置檔案

main.dic:包含了原生的中文詞語,會按照這個裡面的詞語去分詞
stopword.dic:包含了英文的停用詞

一般像停用詞,會在分詞的時候,直接被幹掉,不會建立在倒排索引中

3、自定義詞庫

(1)自己建立詞庫:每年都會湧現一些特殊的流行詞,網紅,藍瘦香菇,喊麥,鬼畜,一般不會在ik的原生詞典裡,需要自己補充自己的最新的詞語,到ik的詞庫裡面去。

IKAnalyzer.cfg.xml配置內容如下:

<properties>
    <comment>IK Analyzer 擴充套件配置</comment>
    <!--使用者可以在這裡配置自己的擴充套件字典 -->
    <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
     <!--使用者可以在這裡配置自己的擴充套件停止詞字典-->
    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>
    <!--使用者可以在這裡配置遠端擴充套件字典 -->
    <!-- <entry key="remote_ext_dict">words_location</entry> -->
    <!--使用者可以在這裡配置遠端擴充套件停止詞字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

可知,我們只需要補充我們的新詞語到custom/mydict.diccustom/single_word_low_freq.dic這兩個字典檔案其中之一即可。
一般都指定到custom/mydict.dic這裡。

將停用詞(如:了,的,呢等,但是這些基本的IK已經給我們都寫了,如有補充,寫到這裡即可)指定到custom/ext_stopword.dic

補充完後,重啟ES服務,然後進行如下測試

GET _analyze
{
  "text": "藍瘦香菇",
  "analyzer": "ik_max_word"
}