Elasticsearch支援繁體中文分析器 (以IK Analyzer分析器為例)
前言
Elasticsearch(以下簡稱ES)為目前最熱門的全文搜索引擎。在學習ES的過程中,發現ES分析器並不支援中文,故參考網路上資源與安裝Third-Party軟體來做為此解決方法的參考之一。
一、下載與安裝Elasticsearch
首先先至Elastic官網下載,本篇以下載ES 7.17.7 Windows平台版本為例:
https://www.elastic.co/downloads/past-releases#elasticsearch
下載完成之後直接解壓縮完成後會有一個elasticsearch-7.17.7的目錄,再進入bin資料夾後點擊elasticsearch.bat即可啟動。
稍等些許時間後開啟瀏覽器(Chrome)輸入「localhost:9200」(Port 9200為es預設的埠號),可看到以下畫面代表啟動成功。
二、下載與安裝Kibana
接下來再至Elastic官網下載,本篇以下載Kibana 7.17.7(注意:需與ES下載相同版本) Windows平台版本為例:
https://www.elastic.co/downloads/past-releases#kibana
下載完成之後直接解壓縮完成後會有一個kibana-7.17.7的目錄,再進入bin資料夾後點擊kibana.bat即可啟動。(ES需要先啟動再啟動Kibana)
稍等些許時間後開啟瀏覽器(Chrome)輸入「localhost:5601」(Port 5601為Kibana預設的埠號),可看到以下畫面代表啟動成功。
安裝Kibana的目的是待會的操作會在Kibana的Dev Tools來操作. (當然不安裝Kibana的話也可以使用Postman工具)
三、下載、安裝IK分析器與使用
ES內建了許多的分析器,詳細請參考官網: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html
分析器主要由三個部份組成:Character Filters (字符過濾器)、Tokenizer (分詞器)和Token Filter (單詞過濾器)
在實務使用上,我們需要透過分析器來將所查詢的文字轉換成一系列的文字,而處理過程稱為分詞。
在標準的分析器中,我們輸入一段英文「welcome to elasticsearch world」英文的分詞是沒有問題的。
接著,我們改輸入「歡迎來到Elasticserach的世界」,結果只有英文分詞正常,但是遇到中文字需要分詞時結果就每一個中文字為一個分詞。像「歡迎」、「世界」都是常見的文字組合,所以必需針對中文字來配置一個可以解析中文字的分析器。
由於目前有在維護的中文分析器(IK)都是簡體中文的。本篇下載和ES相同的版本7.17.7為例。
IK分析器下載:https://github.com/medcl/elasticsearch-analysis-ik/releases
下載並解壓縮。在ik/config資料夾它的分詞都是簡體文字。
所以我們透過ConvertZZ方式將簡體改為繁體。ConvertZZ下載網址:https://github.com/flier268/ConvertZZ
下載與解壓縮後使用「文件/檔名轉換」,將所有副檔名為dic資料全部轉換。
我們看一下轉換後的結果
轉換成功後再將檔案覆蓋在原本ik/config下的資料後再重新啟動ES與Kibana。
再從kibana的Dev Tools上將分析器改為ik的「ik_smart」分析器,再重新操作一次。
POST _analyze
{
"analyzer": "ik_smart",
"text" : "歡迎來到Elasticsearch的世界"
}
結果已經正常將中文字「歡迎」、「來到」、「的」、「世界」分詞了。
當然,若是還是有未能分詞的文字時,例如輸入「阿凡達:水之道」,分詞結果不如預期時,這個時候就需要自定義分詞了。
在ik/config資料夾的IKAnalyzer.cfg內在ext_dict增加自定義的分詞檔案名稱,增加完成後再重新啟動ES。
<entry key="ext_dict">custom.dic</entry>
再重新試一次並檢查結果。
參考資源:
https://www.elastic.co/
https://learnku.com/articles/35136
https://hackmd.io/@tienyulin/elasticsearch-analyzer
https://xenby.com/b/325-%E6%95%99%E5%AD%B8-elasticsearch-%E5%AE%89%E8%A3%9D%E8%88%87%E6%94%AF%E6%8F%B4%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87%E5%88%86%E8%A9%9E