一般文檔內容會比較長,而在實際展示搜尋結果的時候,不可能完全展示出來。這時候就需要做摘要及飄紅設定。系統會截取包含搜尋結果的幾個片段,供使用者瞭解具體匹配內容,以快速判斷是否是自己想要的結果。使用者可以在控制台對搜尋結果的展示效果進行自訂設定,設定完成後,調用 API 時,系統會自動擷取使用者配置,並添加到查詢 query 中,無需使用者再次傳入。當然也可以在 API 參數中通過 summary 參數(參考搜尋處理)進行具體查詢的控制。
主要參數介紹
欄位:需要配置摘要的欄位
片段長度:表示整個摘要最大長度
飄紅標籤:關鍵詞飄紅的html標籤
片段串連符:每個片段之間的串連符
片段數量:在摘要長度內需要幾個片段
控制台配置及生效
1.控制台——>OpenSearch 高效能檢索版——>功能擴充——>搜尋結果展示,配置搜尋結果摘要
2.以下樣本為飄紅標籤的配置。飄紅標籤為em。
SDK/API配置
API 參數中,通過 summary 參數(參考搜尋處理)指定。
SDK配置,以java sdk為例,demo:
// 設定搜尋結果摘要資訊,此處採用下面的SearchParams對象添加搜尋結果摘要,比較簡便 Summary summ = new Summary("name"); summ.setSummary_field("name");//指定的生效的欄位。此欄位必需為可分詞的text類型的欄位。 summ.setSummary_len("50");//片段長度 summ.setSummary_element("em"); //飄紅標籤 summ.setSummary_ellipsis("...");//片段連結符 summ.setSummary_snippet("1");//片段數量 //添加Summary對象參數
溫馨提示:
SDK的SearchParams類中summary對象參數中暫時不能指定飄紅的前尾碼(必須是完整html標籤),前尾碼預設為<>,比如設定飄紅標籤為em,飄紅後返回的JSON結果格式為:阿里雲<em>OpenSearch</em>產品文檔;
若要在SDK中設定飄紅的前尾碼,請使用searchParamsBuilder對象。
// SearchParams的工具類,提供了更為便捷的操作 SearchParamsBuilder paramsBuilder = SearchParamsBuilder.create(searchParams); // 使用SearchParamsBuilder對象添加搜尋結果摘要 paramsBuilder.addCustomParam("summary", "summary_field:name,summary_ellipsis:...,summary_snipped:1,summary_len:50,summary_element_prefix:<abc>,summary_element_postfix:</abc>"); // 添加多個summary_field用分號分割
注意事項
飄紅只會飄紅query的查詢詞,並且飄紅欄位一定要建索引,否則會顯示異常。
不支援摘要與飄紅分開配置。
若配置多個摘要欄位,並且對應摘要欄位值中有包含索引中指定搜尋關鍵詞的分詞,則這些摘要欄位中對應分詞內容都會摘要飄紅。
命中的term比較靠後,超過了10000個位元組的最大限制時,不會顯示飄紅。
若對應用中某個欄位分別建立不同分詞類型,例如同時建立了中文基礎及單字分詞,此時中文單字分詞摘要飄紅會有問題,該摘要飄紅內容只會匹配中文基礎分詞,或出現內容飄紅不對。
同一個請求query中,設定2種及以上不同類型分詞索引進行搜尋召回,會導致不飄紅或飄紅異常。
如果飄紅片段包含特殊字元,返迴文檔會過濾特殊字元;如果需要顯示特殊字元,可以設定自訂子句kvpairs=filter_punc:0以跳過特殊字元過濾。