功能介紹
分詞是搜索引擎中一個基礎但重要的組件,分詞的結果直接影響搜索效果。由于業務場景的多樣,同一個短語在不同的業務、不同的語境下,其語義可能會不一樣,期望分詞的結果也不一樣。為此,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.在開放搜索控制臺主頁左側導航欄找到“搜索算法中心”,選擇“召回配置”,找到“分析器管理”,點擊【創建】:
2.創建分析器,定義分析名稱,選擇分析器類型:
3.添加干預詞條,輸入query,和分詞結果,這里以“糯米”為例,并選擇二次分詞:
注意:分詞用空格隔開。例:“糯米” ==> “糯 米”。
4.進行分詞測試,測試分詞器生效后干預詞條的結果:
4.1.在測試文本中輸入“糯米”:
4.2.多個自定義分析分詞結果對比:
5.分詞效果測試后,回到“召回配置”下的“基本配置”,對線上應用進行變更:
注:此處的“線下變更”,是根據用戶當前的配置生成一個線下應用,線上應用不受影響。
6.在應用字段列表,分析方式一列中,給對應的索引選擇自定義分析器:
7.等待索引重建后,生效:
自定義分析器效果展示
以“糯米”的文檔內容為例,當使用“中文——通用分詞時” 與預期不符(搜索“米”無法將帶有“糯米、小米、大米”的文檔召回),如圖:按上述流程添加“test_zw”自定義分詞器,并修改應用結構,索引重建后,拆分的term與干預后一致,如圖:
注意事項
目前新控制臺可對已創建的自定義分析器可進行詞條添加,若已創建的自定義分析器已經被應用引用,則期間再次添加詞條,需要進行索引重建后才會生效;如想及時生效,需要對分詞有bad case的文檔進行重新更新,以觸發對新增干預詞條的索引重建。
自定義分析器的Query長度不得超過10個字符。
自定義分析器的Query不允許包含大寫字母,全角符號,中文標點。
自定義分詞結果不允許包含大寫字母,全角符號,中文標點。
當關閉二次分詞開關后,則嚴格遵從用戶的干預結果設置,不再進行進一步分詞,反之,允許基于客戶的干預結果后進行進一步分詞。
自定義分詞器類型“行業-電商通用分析器”需要版本類型為“行業增強版”的應用才可以配置使用。
已被應用引用的自定義分析器,無法刪除。