IK分詞外掛程式(analysis-ik)是Elasticsearch(簡稱ES)的擴充外掛程式,提供了基於詞典的分詞能力,預設不能卸載。所有類型的詞典均預設使用IK分詞外掛程式的原生設定檔,通過更新詞典,您可以修改IK分詞外掛程式的預設詞庫或添加新的詞庫,改善分詞效果,讓分詞結果更加符合業務情境需求。在開源外掛程式的基礎上,IK分詞外掛程式擴充支援了通過Object Storage Service動態載入詞典檔案的功能。
前提條件
叢集狀態為正常,可在執行個體的基本資料頁面查看。具體操作請參見查看執行個體的基本資料。
部分低版本執行個體的介面和支援的功能可能與本文有區別,請以控制台為準。
IK分詞外掛程式介紹
IK分詞器的分詞規則
IK分詞外掛程式的分詞器的分詞規則包括ik_smart和ik_max_word兩種:
ik_max_word:將文本按照最細粒度進行拆分,適合術語查詢。
ik_smart:將文本按照粗粒度進行拆分,適合短語查詢。
支援的詞典類型
IK分詞外掛程式支援以下幾種詞典類型:
詞典類型 | 詞典說明 | 詞典檔案要求 | 更新方式 |
主詞典(main.dic) | IK分詞外掛程式原生內建的主詞典包含27萬多條中文詞語。 如果在建立ES索引時指定了主分詞詞典,向叢集中寫入資料時,資料中包含主分詞詞典中的詞,叢集就會建立索引,並且該索引能通過關鍵詞被查詢到。 | 每行一個詞,儲存為UTF-8編碼的DIC檔案。 | |
停用詞詞典(stopword.dic) | IK分詞外掛程式原生內建的停用詞詞典中包含英文的停用詞,例如a、the、and、at、but等。 如果在建立ES索引時指定了停用詞詞典,向索引中寫入資料時,資料中包含的停用詞詞典中的詞會被過濾掉,不會出現在倒排索引中。 | ||
介詞詞典(preposition.dic) | 存放介詞 | - | |
量詞詞典(quantifier.dic) | 存放單位相關的詞和量詞。 | ||
suffix.dic | 存放尾碼 | - | 不支援更新 |
surname.dic | 存放中國的姓氏。 |
支援的詞典更新方式
阿里雲ES的IK分詞外掛程式支援IK詞典冷更新和IK詞典熱更新。
更新方式 | 生效方式 | 載入方式 | 推薦應用情境 |
冷更新 | 對整個叢集的詞典進行更新,詞典生效會觸發叢集重啟。 | 系統將上傳的詞典檔案傳送到ES節點上,然後重啟ES節點載入詞典檔案。 |
|
熱更新 |
|
| 如果您需要擴充主詞典或停用詞詞典檔案,或變更擴充詞典檔案,建議使用IK詞典熱更新。 |
更新詞典
對於已經配置了IK分詞的索引,IK詞典冷更新或熱更新完成後,將只對新資料(包含新增資料和更新後的資料)生效。如果您希望對全部資料生效,需要重建索引。
IK詞典冷更新
您可以通過冷更新方式替換詞典檔案,替換過程需要重啟ES叢集。
冷更新操作會觸發叢集重啟,為保證您的業務不受影響,請在業務低峰期進行操作。
- 登入Elasticsearch控制台。
- 在左側導覽列,單擊Elasticsearch執行個體。
- 進入目標執行個體。
- 在頂部功能表列處,選擇資源群組和地區。
- 在Elasticsearch執行個體中單擊目標執行個體ID。
在左側導覽列,選擇 。
在系統預設外掛程式列表頁簽,找到analysis-ik外掛程式,在其右側操作列中單擊冷更新。
在IK詞庫配置-冷更新控制台,單擊目標詞典右側的編輯,添加或替換對應的詞典檔案後單擊儲存。
詞典檔案更新方式包括:
上傳本地檔案:單擊檔案上傳地區上傳詞典檔案,或拖拽詞典檔案到上傳地區。
上傳OSS檔案:輸入Bucket名稱和詞典檔案名稱,單擊添加。
Bucket與阿里雲ES執行個體需要在同一地區。
不支援自動同步更新詞典檔案。源端OSS中的詞典檔案內容發生變化後,需要通過冷更新使之生效。
說明詞典檔案尾碼必須是
.dic
,詞典檔案名稱可以包含大小寫字母、數字和底線,長度不超過30個字元。每種類型的詞典僅支援上傳一個DIC格式檔案,變更發起後會用您上傳的詞典替換原詞典。
如果您需要恢複詞典的預設檔案,下載預設詞典檔案後上傳。擷取預設詞典檔案,請單擊下載:
單擊確定。
ES執行個體重啟成功後,即詞典檔案更新成功。
(可選)登入ES執行個體的Kibana控制台,測試詞典是否生效。
說明登入Kibana控制台,請參見登入Kibana控制台。
在Kibana控制台的開發工具(Dev Tools)上執行以下代碼:
GET _analyze { "analyzer": "ik_smart", "text": ["您詞典中包含的詞"] }
IK詞典熱更新
您可以通過擴充詞典更新的方式擴充主詞典和停用詞詞典。如果詞典檔案名稱和文檔數量不發生變化,則不需要重啟ES叢集。
- 登入Elasticsearch控制台。
- 在左側導覽列,單擊Elasticsearch執行個體。
- 進入目標執行個體。
- 在頂部功能表列處,選擇資源群組和地區。
- 在Elasticsearch執行個體中單擊目標執行個體ID。
在左側導覽列,選擇 。
在系統預設外掛程式列表頁簽,找到analysis-ik外掛程式,在其右側的操作列中單擊熱更新。
在IK詞庫配置-熱更新控制台,單擊目標詞典右側的編輯,上傳對應的詞典檔案後單擊儲存。
詞典檔案更新方式包括:
上傳本地檔案:單擊檔案上傳地區上傳詞典檔案,或拖拽詞典檔案到上傳地區。
上傳OSS檔案:輸入Bucket名稱和詞典檔案名稱,單擊添加。
Bucket與阿里雲ES執行個體需要在同一地區。
不支援自動同步更新詞典檔案。源端OSS中的詞典檔案內容發生變化後,需要通過熱更新使之生效。
說明詞典檔案尾碼必須是
.dic
,檔案名稱可以包含大小寫字母、數字和底線,長度不超過30個字元。如果您需要修改已上傳的詞典檔案內容,可單擊目標詞典檔案右側的表徵圖,下載、修改詞典檔案,然後刪除源詞典檔案並重新上傳。
支援上傳多個詞典檔案,僅詞典檔案內容發生變化時叢集不需要重啟,檔案名稱或檔案數量發生變化時需要叢集重啟。為保證您的業務不受影響,請在業務低峰期進行操作,等待重啟結束後,詞典會自動生效。
在頁面底部,單擊確定。
阿里雲ES節點上的外掛程式具有自動載入詞典檔案的功能,但每個節點擷取詞典檔案的可能時間不同,請耐心等待詞典生效。
(可選)登入ES執行個體的Kibana控制台,測試詞典是否生效。
說明登入Kibana控制台,請參見登入Kibana控制台。
為保證準確性,在Kibana控制台的開發工具(Dev Tools)上多次執行以下命令進行驗證。
GET _analyze { "analyzer": "ik_smart", "text": ["您詞典中包含的詞"] }
相關文檔
IK詞典熱更新的API文檔:UpdateHotIkDicts
IK詞典冷更新的API文檔:UpdateDict