功能介紹
分詞是搜尋引擎中一個基礎但重要的組件,分詞的結果直接影響搜尋效果。由於業務情境的多樣,同一個短語在不同的業務、不同的語境下,其語義可能會不一樣,期望分詞的結果也不一樣。為此,OpenSearch除了提供面向通用領域的基礎分析器外,還提供了面向特定領域的分析器,如面向電商領域的電商分析器等。
為了更好的滿足使用者的業務需求,OpenSearch可以讓使用者在系統提供的基礎分析器的基礎上,通過結合幹預詞條的形式建立自訂分析器。在應用的索引欄位的分析器中選擇使用相應的分析器,以達到幹預索引和查詢時分詞結果,確保搜尋結果的品質。
詞條幹預
可以通過“二次分詞”的功能管理幹預詞條。
開啟二次分詞表示使用者自訂分詞後,還會再次切分自訂分詞結果;關閉二次分詞則保留使用者自訂的分詞結果。
以詞條“OpenSearch”,分析器為“中文通用”為例,開啟二次分詞的結果是:
關閉二次分詞的結果:
注意事項
自訂分析器的詞條是該分析器中分析器類型裡的分析器的全部詞條和手動添加的詞條的總和,並且手動幹預的詞條優先順序高於預設分析器的詞條
新控制台自訂分析器的個數最多為20個;
單個自訂分詞器最多能包含1000個幹預詞條;
每個詞條中,key為不超過10個字元,value為不超過32個字元;1個字元為1個漢字或1個英文字母;
詞條內容中不能包含大寫字母(A-Z),全形符號(\uff01 - \uff5e),中文標點符號;
語義切分幹預詞條中,key和value在去掉空格後,內容需相同;樣本如下:
不正確的詞條=>錯誤 的 詞條 正確的詞條=>正確 的 詞條
第1個詞條中,key和value去掉空格後,內容不一致,因此是不符合規範的詞條。
key中不能包含有空格;樣本如下:
不正確 詞條=>不 正確 詞條 正確詞條=>正確 詞條
第1個詞條,key中包含了空格(“ “),因此是不符合規範的詞條。
key的內容不能為同一個幹預詞典中其他詞條value中的一部分;樣本如下:
自訂分詞器=>自訂 分詞器 分詞器 分詞
第2個詞條的key的內容“分詞器”,是第1個詞條value中的一部分,因此第2個詞條是不符合規範的。但第3條詞條是符合規範的。
流程示範
流程簡述
建立自訂分析器 —— 線下變更 —— 索引重建 —— 自訂分詞器效果展示
操作步驟
1.在OpenSearch控制台首頁左側導覽列找到“搜尋配置中心”,選擇“召回配置”,找到“分析器管理”,點擊【建立】:
2.建立分析器,定義分析名稱,選擇分析器類型:
3.添加幹預詞條,輸入query,和分詞結果,這裡以“糯米”為例,並選擇二次分詞:
注意:分詞用空格隔開。例:“糯米” ==> “糯 米”。
4.進行分詞測試,測試分詞器生效後幹預詞條的結果:
4.1.在測試文本中輸入“糯米”:
4.2.多個自訂分析分詞結果對比:
5.分詞效果測試後,回到“召回配置”下的“基本配置”,對線上應用進行變更:
注:此處的“線下變更”,是根據使用者當前的配置產生一個線下應用,線上應用不受影響。
6.在應用欄位列表,分析方式一列中,給對應的索引選擇自訂分析器:
7.等待索引重建後,生效:
自訂分析器效果展示
以“糯米”的文檔內容為例,當使用“中文——通用分詞時” 與預期不符(搜尋“米”無法將帶有“糯米、小米、大米”的文檔召回),如圖:按上述流程添加“test_zw”自訂分詞器,並修改應用結構,索引重建後,拆分的term與幹預後一致,如圖:
注意事項
目前新控制台可對已建立的自訂分析器可進行詞條添加,若已建立的自訂分析器已經被應用引用,則期間再次添加詞條,需要進行索引重建後才會生效;如想及時生效,需要對分詞有bad case的文檔進行重新更新,以觸發對新增幹預詞條的索引重建。
自訂分析器的Query長度不得超過10個字元
自訂分析器的Query不允許包含大寫字母,全形符號,中文標點
自訂分詞結果不允許包含大寫字母,全形符號,中文標點
當關閉二次分詞開關後,則嚴格遵從使用者的幹預結果設定,不再進行進一步分詞,反之,允許基於客戶的幹預結果後進行進一步分詞
已被應用引用的自訂分析器,無法刪除