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:最粗度的拆分,單純將一段文字進行切割。