全部產品
Search
文件中心

Tablestore:摘要與高亮

更新時間:Aug 12, 2026

使用 Tablestore Go SDK 為 Text 欄位返回匹配文本的摘要片段並標記命中詞。

前提條件

開始前,完成以下準備工作:

功能說明

摘要與高亮從匹配的 Text 欄位中提取文本片段,並使用指定標籤標記命中詞。Go SDK 支援對以下查詢條件返回摘要與高亮:精確查詢、多詞精確查詢、首碼查詢、萬用字元查詢、範圍查詢、多條件組合查詢、固定評分查詢、匹配查詢、短語匹配查詢和巢狀型別查詢(通過 InnerHits)。

重要
  • 使用 MatchQueryMatchPhraseQuery 時,同一個命中詞條可能被多組前置標籤和後置標籤標記。

  • 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

高亮分區原文的編碼方式。取值如下:

  • PlainMode(預設):直接返回原文。

  • HtmlMode:對 HTML 特殊字元轉義,適合直接在網頁中展示。逸出字元如下:

    • < 轉義為 &lt;

    • > 轉義為 &gt;

    • " 轉義為 &quot;

    • ' 轉義為 &#x27;

    • / 轉義為 &#x2F;

欄位高亮參數

名稱

類型

說明

NumberOfFragments(可選)

*int32

返回的高亮分區最大數量,推薦設定為 1。

FragmentSize(可選)

*int32

每個分區的目標長度,預設值為 100。實際分區長度可能與該值不同。

PreTag(可選)

*string

命中詞前標籤,預設值為 <em>。支援 < > " ' /、英文字母和數字。

PostTag(可選)

*string

命中詞後標籤,預設值為 </em>。支援 < > " ' /、英文字母和數字。

HighlightFragmentOrder(可選)

*search.HighlightFragmentOrder

高亮分區排序方式。TextSequence 按原文出現順序排序,預設使用該值;Score 按命中評分排序。

傳回值

配置摘要與高亮後,從 SearchResponse.SearchHits[].HighlightResultItem.HighlightFields 讀取各欄位的高亮分區。巢狀型別查詢的高亮結果從 SearchInnerHits 中的命中項讀取。