Tous les produits
Search
Centre de documentation

Tablestore:Mettre en surbrillance les résultats de requête

Dernière mise à jour :Aug 08, 2026

Utilisez les fonctionnalités de résumé et de mise en surbrillance du SDK Tablestore pour Java afin de renvoyer des fragments issus des champs Text contenant les termes correspondants, et de marquer ces termes à l'aide des balises configurées.

Prérequis

Notes

  • Lorsque vous utilisez les fonctionnalités de résumé et de mise en surbrillance avec une requête MatchQuery ou MatchPhraseQuery, plusieurs balises ouvrantes et fermantes peuvent mettre en surbrillance les termes correspondants.

  • Si le type de tokenizer du champ Text est défini sur la tokenisation sémantique maximale, les fonctionnalités de résumé et de mise en surbrillance ne sont pas prises en charge lors de l'utilisation d'une requête MatchPhraseQuery pour interroger les données.

  • Le fractionnement des fragments peut diviser un terme correspondant dans le texte. Dans ce cas, le terme risque de ne pas être mis en surbrillance.

Paramètres

Paramètre

Description

HighlightEncoder

La méthode d'encodage des fragments de texte mis en surbrillance. Valeurs possibles :

  • PLAIN (par défaut) : affiche les fragments de texte mis en surbrillance sans nécessiter d'encodage.

  • HTML : effectue un encodage HTML sur les fragments de texte mis en surbrillance. Une fois l'encodage HTML terminé, < est converti en &lt;, > en &gt;, " en &quot;, ' en &#x27; et / en &#x2F;. Si vous souhaitez afficher des pages web, nous vous recommandons d'utiliser le format HTML.

FieldHighlightParams

Les paramètres de mise en surbrillance du champ. Vous pouvez activer la mise en surbrillance uniquement pour les champs contenant les mots-clés spécifiés dans les objets SearchQuery.

HighlightParameter

NumberOfFragments

Le nombre maximal de fragments de texte mis en surbrillance à renvoyer. Nous vous recommandons de définir ce paramètre sur 1.

FragmentSize

La longueur de chaque fragment de texte à renvoyer. Valeur par défaut : 100.

Important

La longueur réelle du fragment de texte renvoyé peut différer de la valeur de ce paramètre.

PreTag

La balise ouvrante utilisée pour mettre en surbrillance les mots-clés de la requête. Exemples : <em> et <b>. Valeur par défaut : <em>. Vous pouvez spécifier une balise ouvrante en fonction de vos besoins métier. Le paramètre preTag prend en charge les jeux de caractères suivants : < > " ' /, a-z, A-Z et 0-9.

PostTag

La balise fermante utilisée pour mettre en surbrillance les mots-clés de la requête. Exemples : </em> et </b>. Valeur par défaut : <em>. Vous pouvez spécifier une balise fermante en fonction de vos besoins métier. Le paramètre postTag prend en charge les jeux de caractères suivants : < > " ' /, a-z, A-Z et 0-9.

HighlightFragmentOrder

La règle de tri des fragments de texte mis en surbrillance à renvoyer.

  • TEXT_SEQUENCE (par défaut) : les fragments de texte mis en surbrillance sont triés selon l'ordre de leur apparition dans le texte d'origine.

  • SCORE : les fragments de texte mis en surbrillance sont triés selon le score des mots-clés trouvés.

Exemple

L'exemple suivant utilise une requête de correspondance pour récupérer les lignes dont le champ description contient le terme tablestore. L'exemple entoure les termes correspondants dans les fragments renvoyés avec <b> et </b>. Le champ description est un champ Text pour lequel le résumé et la mise en surbrillance sont activés.

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("")
    }
}

Références