Todos os produtos
Search
Central de documentação

Tablestore:Realçar os resultados da consulta

Última atualização: Jun 30, 2026

Ao consultar dados, defina parâmetros de realce para retornar trechos de texto que contenham o termo pesquisado e destacá-lo nos resultados. O recurso de resumo e realce é compatível apenas com campos do tipo Text.

Pré-requisitos

Observações

  • Ao usar o recurso de resumo e realce com MatchQuery ou MatchPhraseQuery, múltiplas tags de abertura e fechamento podem destacar os termos correspondentes.

  • Se o tipo de tokenizador do campo Text for tokenização semântica máxima, o recurso de resumo e realce não terá suporte em consultas com MatchPhraseQuery.

  • A divisão de fragmentos pode separar um termo correspondente no texto. Nesse caso, o termo pode não ser realçado.

Parâmetros

Parâmetro

Descrição

HighlightEncoder

Método de codificação dos fragmentos de texto realçados. Valores válidos:

  • PLAIN (padrão): exibe os fragmentos de texto realçados sem necessidade de codificação.

  • HTML: aplica codificação HTML aos fragmentos de texto realçados. Após a codificação HTML, < é convertido em &lt;, > em &gt;, " em &quot;, ' em &#x27; e / em &#x2F;. Recomendamos o uso do formato HTML para exibição em páginas web.

FieldHighlightParams

Configurações de realce do campo. Ative o recurso de realce somente para campos que contenham palavras-chave especificadas nos objetos SearchQuery.

HighlightParameter

NumberOfFragments

Número máximo de fragmentos de texto realçados a retornar. Recomendamos definir este parâmetro como 1.

FragmentSize

Tamanho de cada fragmento de texto retornado. Valor padrão: 100.

Importante

O tamanho real do fragmento de texto retornado pode diferir do valor definido neste parâmetro.

PreTag

Tag de abertura usada para realçar as palavras-chave da consulta. Exemplos: <em> e <b>. Valor padrão: <em>. Especifique uma tag de abertura conforme suas necessidades de negócio. O parâmetro preTag aceita os seguintes conjuntos de caracteres: < > " ' /, a-z, A-Z e 0-9.

PostTag

Tag de fechamento usada para realçar as palavras-chave da consulta. Exemplos: </em> e </b>. Valor padrão: <em>. Especifique uma tag de fechamento conforme suas necessidades de negócio. O parâmetro postTag aceita os seguintes conjuntos de caracteres: < > " ' /, a-z, A-Z e 0-9.

HighlightFragmentOrder

Regra de ordenação dos fragmentos de texto realçados a retornar.

  • TEXT_SEQUENCE (padrão): os fragmentos de texto realçados seguem a ordem de aparição no texto original.

  • SCORE: a ordenação dos fragmentos de texto realçados baseia-se na pontuação das palavras-chave encontradas.

Exemplo

O exemplo abaixo demonstra como usar MatchQuery para localizar dados em que a coluna Col_Text corresponda a hangzhou shanghai e como realçar o termo pesquisado nos resultados. A coluna Col_Text é do tipo Text.

func MatchQuerywithHighlight(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.MatchQuery{} // Set the query type to MatchQuery. 
    query.FieldName = "Col_Text"  // Specify the field that you want to match. 
    query.Text = "hangzhou shanghai"  // Specify the keyword that you want to match. 
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    highlight := &search.Highlight{
        FieldHighlightParameters: map[string]*search.HighlightParameter{
            "Col_Text": {
                NumberOfFragments: proto.Int32(5),
                PreTag:            proto.String("<b>"),
                PostTag:           proto.String("</b>"),
            },
        },
    }
    searchQuery.SetHighlight(highlight)
    searchQuery.SetGetTotalCount(true)
    searchQuery.SetOffset(0) // Set the Offset parameter to 0. 
    searchQuery.SetLimit(20) // Set the Limit parameter to 20, which specifies that up to 20 rows can be returned. 
    searchRequest.SetSearchQuery(searchQuery)
    // Specify that all fields in the search index are returned. 
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    })

    if resp, err := client.Search(searchRequest); err != nil {
        fmt.Println("Highlighting query failed with err: ", err)
    } else {
        fmt.Println("RequestId: " + resp.RequestId)
        // Display the highlighted query results. When you query a non-Nested field, you can set the padding parameter to null. 
        printSearchHit(resp.SearchHits, " ")
    }
    fmt.Println("highlight query finished")
}

/**
 * Display the content that meets the query conditions. 
 * @param searchHits searchHits
 * If the output uses the @param prefix Nested structure, add the prefix to display the hierarchy information. 
 */
func printSearchHit(searchHits []*tablestore.SearchHit, padding string) {
    for _, searchHit := range searchHits {
        if searchHit.Score != nil {
            fmt.Printf("%sScore: %f\n", padding, *searchHit.Score)
        }

        if searchHit.Row != nil {
            jsonBody, err := json.Marshal(*searchHit.Row)
            if err != nil {
                panic(err)
            }
            fmt.Println("Row: ", string(jsonBody))
        }

        if searchHit.HighlightResultItem != nil && len(searchHit.HighlightResultItem.HighlightFields) != 0 {
            fmt.Printf("%sHighlight: \n", padding)
            for colName, highlightResult := range searchHit.HighlightResultItem.HighlightFields {
                fmt.Printf("%sColumnName: %s, Highlight_Fragments: %v\n", padding+padding, colName, highlightResult.Fragments)
            }
        }

        fmt.Println("")
    }
}

Referências