摘要与高亮

更新时间:
复制 MD 格式

使用 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 中的命中项读取。