使用 Tablestore Go SDK 為 Text 欄位返回匹配文本的摘要片段並標記命中詞。
前提條件
開始前,完成以下準備工作:
-
安裝Tablestore Go SDK並初始化用戶端。
-
建立多元索引時,為需要高亮的 Text 欄位啟用 EnableHighlighting。具體操作請參見建立多元索引。
功能說明
摘要與高亮從匹配的 Text 欄位中提取文本片段,並使用指定標籤標記命中詞。Go SDK 支援對以下查詢條件返回摘要與高亮:精確查詢、多詞精確查詢、首碼查詢、萬用字元查詢、範圍查詢、多條件組合查詢、固定評分查詢、匹配查詢、短語匹配查詢和巢狀型別查詢(通過 InnerHits)。
使用
MatchQuery或MatchPhraseQuery時,同一個命中詞條可能被多組前置標籤和後置標籤標記。Text欄位使用最大語義分詞時,MatchPhraseQuery不支援摘要與高亮。分區邊界可能切分命中詞條,導致該詞條未被高亮。
highlight := search.NewHighlight().
AddFieldHighlightParameter(
"title",
search.NewHighlightParameter().
SetNumberOfFragments(3).
SetPreTag("<em>").
SetPostTag("</em>"),
)
searchQuery := search.NewSearchQuery().
SetQuery(&search.MatchQuery{FieldName: "title", Text: "go search"}).
SetHighlight(highlight)
response, err := client.Search(&tablestore.SearchRequest{
TableName: "example_table",
IndexName: "example_index",
SearchQuery: searchQuery,
})
if err != nil {
log.Fatal(err)
}
for _, hit := range response.SearchHits {
fmt.Println(hit.HighlightResultItem)
}
參數說明
高亮配置
|
名稱 |
類型 |
說明 |
|
FieldHighlightParameters(必選) |
map[string]*search.HighlightParameter |
欄位名稱與高亮參數的映射。欄位必須已啟用摘要與高亮,並參與支援摘要與高亮的查詢條件,否則不會返回該欄位的高亮分區。 |
|
HighlightEncoder(可選) |
*search.HighlightEncoder |
高亮分區原文的編碼方式。取值如下:
|
欄位高亮參數
|
名稱 |
類型 |
說明 |
|
NumberOfFragments(可選) |
*int32 |
返回的高亮分區最大數量,推薦設定為 1。 |
|
FragmentSize(可選) |
*int32 |
每個分區的目標長度,預設值為 100。實際分區長度可能與該值不同。 |
|
PreTag(可選) |
*string |
命中詞前標籤,預設值為 |
|
PostTag(可選) |
*string |
命中詞後標籤,預設值為 |
|
HighlightFragmentOrder(可選) |
*search.HighlightFragmentOrder |
高亮分區排序方式。TextSequence 按原文出現順序排序,預設使用該值;Score 按命中評分排序。 |
傳回值
配置摘要與高亮後,從 SearchResponse.SearchHits[].HighlightResultItem.HighlightFields 讀取各欄位的高亮分區。巢狀型別查詢的高亮結果從 SearchInnerHits 中的命中項讀取。