【Elasticsearch】IK分詞器 – 安裝繁體臺灣常用詞庫 與 熱更新

ElasticSearch是開源的分散式全文檢索引擎

提供儲存搜尋功能,符合RESTful格式,並且效能非常的優秀。

且有許多可以擴充的plugin套件!

ik 是 ElasticSearch 目前較爲主流的開源中文分詞器

安裝 中文分詞器 IK Analyzer

# 注意版號 需與 Elasticsearch版號相同
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.1/elasticsearch-analysis-ik-7.9.1.zip

# 重啟
docker-compose restart elasticsearch

# 查看安裝結果
/usr/share/elasticsearch/bin/elasticsearch-plugin list

 

翻譯詞庫 (簡轉繁)

# Ubuntu 安裝 OpenCC
apt-get update
apt-get install opencc

# s2tw  簡體轉繁體
# s2twp 簡體轉繁體+轉換臺灣常用詞彙
cd /usr/share/elasticsearch/config/analysis-ik
opencc -c s2twp.json -i main.dic -o /tmp/main-tw.dic

cp main.dic /tmp/main-cn.dic

cat /tmp/main-tw.dic /tmp/main-cn.dic | sort | uniq > main.dic

# 重啟
docker-compose restart elasticsearch

# 測試
GET _analyze
{
"analyzer": "ik_smart",
"text": "這裡有好吃的冰淇淋,便宜又量多哦"
}

 

詞庫檔

IK 內建三種詞庫檔:

main.dic:主要詞庫,多為常用字詞

quantifier.dic:量詞詞庫,多為量詞,比如公分、分鐘等。

stopword.dic:停止詞庫,主要指英語上的停用詞,用於自動過濾掉某些字或詞,比如 that、a、is 等。

 

熱更新 – 擴展詞庫

如果有額外詞庫檔要做熱更新,可進行以下調整

# 編輯設定檔
vim /usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml

# 修改 remote_ext_dict 與 remote_ext_stopwords
# 目標檔為 UTF-8 的 txt檔
# 檔案內容一行一字詞

# 重啟
docker-compose restart elasticsearch

更新條件:請求的 header 的 Last-Modified 與 ETag 其一不同時,將會更新

更新頻率:一分鐘檢查一次

 

IK分詞器類別

ik_max_word:最細度拆分,切割後會盡可能的做各種組合

ik_smart:最粗度的拆分,單純將一段文字進行切割。