在 Elastic Co 的管理介面逛了一圈,找不到可以直接調整的地方。
找到這一篇:
Upload custom plugins, dictionaries, and scriptsedit
看起來最快的解法還是到 IK Analysis for Elasticsearch 的 Github 下載
https://github.com/medcl/elasticsearch-analysis-ik
將 zip 檔案解壓縮後,直接針對 "IKAnalyzer.cfg.xml" 進行設定
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
依照網路上的教學文件,最彈性的方式是直接將詞庫路徑設定 remote_ext_dict 區域中,就可以做到熱更新(不用重啟 ElastciSearch) ,只要文件符合 UTF-8 與 一詞一斷行的規格即可。不過由於網路上的教學文,主要都是透過 Docker 或是本機安裝,所以設定起來相對簡單。我也無法不確定,透過 Google Drive 的文件分享能不能直接被 Elastic 雲端主機存取成功。所以我決定偷懶一點,直接將三國演義人名,直接附加在原本的套件作者的 main.dic 詞庫中。
從 275910 Row 開始,就是我貼上的三國演義人名:
接著再將資料夾打包成 zip 檔,再透過Elastic co 的管理介面 "update your extension"。
這就是我目前研究出現的更新詞庫的方式。坦白說,這不是一個很好的方式,畢竟在實務上,詞庫可能會經常一個月就要更新好幾次。
不過這次的目的是研究與學習,就先不把生產環境的因素給考慮進來。
上星期假日,在誠品略讀了 "Python × Network一拍即合:自動化、程式化和DevOps 的一站式解決方案" 。其中也有提到,除非你是專心致志在 ElasticSearch 上,建議還是使用雲端服務對於運維上的壓力會減輕很多.... 我光是這陣子學習 ElasticSearch 就真心覺得不簡單,而且這還是在我閃躲掉很多專業議題的情況下。
好啦,就只剩下 6 篇就結束了 ....