一般文檔內容會比較長,而在實際展示搜索結果的時候,不可能完全展示出來。這時候就需要做摘要及飄紅設置。系統會截取包含搜索結果的幾個片段,供用戶了解具體匹配內容,以快速判斷是否是自己想要的結果。用戶可以在控制臺對搜索結果的展示效果進行自定義設置,設置完成后,調用 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>開放搜索</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以跳過特殊字符過濾。