全部產品
Search
文件中心

OpenSearch:同義字幹預詞典

更新時間:Jul 13, 2024

業務情境不一樣,某些詞的同義字也會有所差異,會存在系統內建詞典缺少同義字或者提供了錯誤的同義字。因此,提供了幹預功能,供使用者自訂同義字。

通過建立同義字幹預詞典,並在查詢分析中同義字配置相應的幹預詞典,就可以幹預同義字功能。

使用介紹

目前支援對系統內建的同義字詞典進行人工幹預(同義字幹預詞典主要是在”查詢分析——同義字”中的系統內建詞典功能基礎上再進行追加),使用者實現幹預操作的過程通常有以下四步:

  1. 建立同義字幹預詞典。使用者通過搜尋演算法中心-->召回配置--->詞典管理,進入查詢分析幹預詞典頁後,單擊頁面右上方的“建立”。選擇了詞典類型後,為詞典命名,幹預詞典建立完成,詞典會出現在頁面的詞典列表中。

  2. 新增和管理幹預詞典內的幹預詞條。詞典建立完成後,在列表中單擊詞典名稱或單擊詞典對應的“詞條管理”,即可進入到幹預詞典的詳情頁。使用者可在詳情頁內進行幹預詞條的新增和管理。

使用者可對Query進行兩種類型的幹預:

  • 添加同義字:對一個Query添加同義字,系統在查詢Query時會同時返回包含Query的或添加的同義字的搜尋結果。

  • 屏蔽同義字:對一個Query屏蔽已有的同義字,系統在查詢Query時不再會同時返回包含屏蔽的已有的同義字的搜尋結果。

    1. 使用幹預詞典。建立並填充完成同義字幹預詞典後,可在任意應用的查詢規則內選擇使用。

    2. 幹預詞典效果測試和上線。查詢分析規則使用了幹預詞典後,在應用到線上前建議先進行搜尋效果測試,評估效果是否符合幹預預期。

幹預詞條生效規則

  • 查詢詞中的一個或連續多個(最多5個)不包含停用詞的語義term和幹預詞條中的query相同,則會幹預生效;

  • 同義字幹預生效樣本:query為:迪奧aj聯名低幫鞋子,配置的幹預詞條為:迪奧->dioraj->air jordan聯名->合作,最終三個同義字幹預均會生效。可以命中:dior aj 聯名低幫鞋子、dior air jordan 聯名低幫鞋子、dior aj 合作低幫鞋子、dior air jordan 合作低幫鞋子等8個query的結果。

  • 查詢詞中匹配權重靠前的幹預詞條優先生效;例如:配置的幹預詞條為:咽喉炎 -> 咽炎,扁挑體炎,上火,喉嚨痛,喉嚨紅腫低燒 -> 發燒、發熱,體溫高藥 -> 中藥,西藥,中成藥。query為:咽喉炎低燒吃什麼藥好得快,假如咽喉炎和藥的權重是7,低燒的權重是4;那麼最後保留下來的同義字是咽喉炎 -> 咽炎,扁挑體炎,上火,喉嚨痛,喉嚨紅腫 藥 -> 中藥,西藥,中成藥

  • 查詢詞中匹配權重相同時,位置靠前的幹預詞條優先生效;例如:幹預詞條蘋果手機->iphone, 手機充電器->移動電源,query: 蘋果手機充電器,最終生效的同義字幹預為蘋果手機->iphone

  • 查詢詞中匹配位置相同時,幹預詞條的長度(語義term個數)優先,即優先使用語義term個數多的幹預詞條;例如:幹預詞條手機充電器-> 移動電源, 手機->行動電話 , query: 手機充電器哪個牌子好,最終生效的同義字幹預為手機充電器 -> 移動電源

  • 使用者幹預的優先,即如果系統的同義字和使用者幹預的有衝突,保留使用者幹預的。衝突指使用者幹預的部分包含或者被包含在系統出的同義字的語義term範圍(指位置)內。如下:

    • 使用者幹預的範圍包含系統的範圍。假設系統有同義字:包菜 -> 圓白菜,查詢詞:炒包菜 會被擴充為:炒 AND (包菜 OR 圓白菜);如果使用者添加同義字:炒包菜 -> 炒甘藍,那麼就會被擴充為:炒包菜 OR 炒甘藍。 即圓白菜這個系統的同義字被忽略;

    • 使用者幹預範圍被包含於系統範圍內。假設系統有同義字:蘋果手機 -> iphone,那麼查詢詞:蘋果手機會給擴充為蘋果手機 OR iphone;如果使用者添加同義字:手機->行動電話, 那麼會被擴充為蘋果 AND (手機 OR 行動電話)。

注意

  • 同義字的個數由最終產生的query group數來限制(當前是36個)。

實戰演練

業務情境:業務情境:某電商導購類業務在OpenSearch的應用執行個體中配置使用了查詢分析規則,規則包含同義字功能,但是線上上發現了badcase,於是決定使用幹預功能。

badcase:使用者搜尋Query“apple”發現相關商品沒有返回,但實際資料庫內有相關商品的資料,不過商品的描述都用了其同義字“蘋果”。

問題診斷:系統同義字詞典缺失“蘋果”是”apple“的同義字識別。

解決方案:建立同義字幹預詞典,在詞典中幹預Query“apple”,為其添加同義字“蘋果”,將該同義字幹預詞典應用線上上使用的查詢分析規則中。

操作步驟

  1. 在控制台>搜尋演算法中心>召回配置>詞典管理建立同義字詞典:

image

填寫“名稱”,詞典類型選擇“同義字”2

2.在建立的同義字幹預詞典裡新增幹預詞條,Query欄填寫“apple”,添加同義字欄填寫“蘋果”:

3

3.在查詢分析介面把剛剛建立的“同義字幹預詞典”先應用在一個未上線的查詢分析規則中,以便進行搜尋效果測試:

4

4.搜尋測試是否符合預期效果。發現搜尋結果召回了包含“蘋果”或“apple”的結果,符合預期:

5

注意事項

  • 詞典類型和名稱在建立後均不可修改。

  • 新增幹預詞條時,填寫的Query不應與幹預列表內已幹預過的Query重複。歷史幹預過的Query可在列表內直接對增加和屏蔽的同義字進行增、刪、改。

  • 單個Query下添加或屏蔽多個同義字,每個詞之間用;分隔。

  • 新增或修改幹預詞條後,生效狀態如果持續是“正在生效”,可以單擊重新整理按鈕擷取生效狀態的同步。

  • 同一幹預詞典可以被多個查詢分析規則使用。

  • 由於目前的幹預詞典是基於系統內建詞典的補丁式幹預,所以詞典使用時會預設勾選使用系統內建詞典。

  • 被任一查詢規則(不論是否上線)使用的幹預詞典不能被刪除,想要刪除需要首先解除使用。

功能限制

  • 同義字幹預詞典一共可以建立20個。

  • 每次新增同義字幹預詞條時,Query只支援填寫一個,同一Query下添加和屏蔽的同義字總和應≤5條。

  • 每個同義字幹預詞典最多可建立1000個幹預詞條。

  • 同義字幹預詞條按照分詞後的term進行匹配生效。例如,為Query“北京”添加了同義字“帝都”,那麼查詢“北京”會返回包含“北京”或“帝都”的結果,同時查詢“北京歡迎你”,返回包含“北京歡迎你”或“帝都歡迎你”的結果。

  • 添加的幹預內容均會進行大小寫和全半形歸一化處理,其中大寫字母會歸一化為小寫,全形會歸一化為半形。

  • 相關SDK參考:PushInterventionDictionaryEntries - 接收幹預詞條變更

  • 大量新增同義字幹預詞條時,json格式參考下例:

[{"cmd":"add","word":"hey","alias":["hei","hei2"],"antiAlias":["hi"]}]

若是老使用者使用舊控制台,批量上傳則參考下面的格式:

[{"cmd":"add","word":"hey","alias":["hei","hei2"],"anti_alias":["hi"]}]