Tous les produits
Search
Centre de documentation

Tablestore:Résumé et mise en surbrillance

Dernière mise à jour :Aug 20, 2026

Utilisez le SDK Tablestore pour Python afin de renvoyer des fragments de champs Text contenant les jetons correspondants et de marquer ces jetons.

Prérequis

Installez le SDK Tablestore pour Python et initialisez un client.

La fonctionnalité de résumé et de mise en surbrillance nécessite une version du SDK égale ou supérieure à 6.0.0. Nous vous recommandons d'utiliser la dernière version du SDK.

Lors de la création de l'index de recherche, définissez enable_highlighting sur True pour le champ Text cible.

Description

Le résumé et la mise en surbrillance extraient des fragments de texte autour des jetons correspondants et marquent ces jetons à l'aide de balises ouvrantes et fermantes. Cette fonctionnalité prend en charge uniquement les champs Text. Dans une requête, utilisez SearchQuery.highlight pour spécifier les champs et les configurations de fragmentation.

Le SDK Tablestore pour Python 6.4.6 prend en charge le résumé et la mise en surbrillance pour les requêtes TermQuery, TermsQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, MatchQuery et MatchPhraseQuery. Pour la requête BoolQuery, vous pouvez mettre en surbrillance les champs utilisés par les types de sous-requêtes pris en charge. Pour la requête NestedQuery, configurez la mise en surbrillance des lignes enfants correspondantes dans InnerHits.highlight. Pour plus d'informations, consultez la rubrique Requête imbriquée.

Remarque

Avec les requêtes MatchQuery ou MatchPhraseQuery, un jeton correspondant peut être marqué par plusieurs paires de balises ouvrantes et fermantes. La requête MatchPhraseQuery ne prend pas en charge la mise en surbrillance pour un champ Text utilisant l'analyseur sémantique maximal. Une limite de fragment peut scinder un jeton correspondant et empêcher sa mise en surbrillance.

L'exemple suivant recherche le jeton tablestore dans le champ description et marque les jetons correspondants dans les fragments avec les balises <b> et </b>.

query = MatchQuery("description", "tablestore")
highlight = Highlight(
    [
        HighlightParameter(
            "description",
            number_of_fragments=1,
            fragment_size=100,
            pre_tag="<b>",
            post_tag="</b>",
        )
    ],
    HighlightEncoder.PLAIN_MODE,
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10, highlight=highlight),
)
for hit in response.search_hits:
    for field in hit.highlight_result.highlight_fields:
        print(field.field_name, field.field_fragments)

Paramètres

Le paramètre search_query.highlight est de type Highlight. Le tableau suivant utilise des chemins complets pour décrire les deux niveaux de configuration de Highlight et de HighlightParameter.

Nom

Type

Description

highlight_parameters (obligatoire)

list[HighlightParameter]

Les configurations de fragments mis en surbrillance pour les champs. Chaque champ doit avoir la mise en surbrillance activée et participer à un type de requête qui la prend en charge.

highlight_encoder (facultatif)

HighlightEncoder

Le mode d'encodage du texte des fragments. Le mode PLAIN_MODE (par défaut) n'encode pas le texte. Le mode HTML_MODE échappe les caractères <, >, ", ' et / respectivement en &lt;, &gt;, &quot;, &#x27; et &#x2F;, ce qui convient à l'affichage web.

highlight_parameters[].field_name (obligatoire)

str

Le nom du champ Text pour lequel renvoyer les fragments et les mises en surbrillance.

highlight_parameters[].number_of_fragments (facultatif)

int

Le nombre maximal de fragments à renvoyer pour un champ. Nous recommandons la valeur 1.

highlight_parameters[].fragment_size (facultatif)

int

La longueur cible du fragment. Valeur par défaut : 100. La longueur réelle peut différer.

highlight_parameters[].pre_tag (facultatif)

str

La balise ouvrante pour les jetons correspondants. Valeur par défaut : <em>. Spécifiez ce paramètre conjointement avec post_tag. La balise peut contenir les caractères <, >, ", ', /, ainsi que les lettres a-z, A-Z et les chiffres 0-9.

highlight_parameters[].post_tag (facultatif)

str

La balise fermante pour les jetons correspondants. Valeur par défaut : </em>. Spécifiez ce paramètre conjointement avec pre_tag. La balise peut contenir les caractères <, >, ", ', /, ainsi que les lettres a-z, A-Z et les chiffres 0-9.

highlight_parameters[].fragments_order (facultatif)

HighlightFragmentOrder

L'ordre de tri des fragments. L'option TEXT_SEQUENCE (par défaut) trie selon la position dans le texte d'origine, tandis que l'option SCORE trie selon le score de pertinence du jeton.

Réponse

Les résultats de mise en surbrillance sont disponibles dans SearchResponse.search_hits[].highlight_result et présentent la structure suivante.

Champ

Type

Description

search_hits

list[SearchHit]

Les résultats de recherche.

search_hits[].row

Row

La ligne correspondante.

search_hits[].highlight_result

HighlightResult

Le résultat du résumé et de la mise en surbrillance pour la ligne. La valeur est vide si aucune mise en surbrillance n'est renvoyée.

search_hits[].highlight_result.highlight_fields

list[HighlightField]

Les mises en surbrillance pour les champs de la ligne.

highlight_fields[].field_name

str

Le nom du champ mis en surbrillance.

highlight_fields[].field_fragments

list[str]

Les fragments mis en surbrillance. Les jetons correspondants sont marqués par les balises configurées.

Réponse compatible avec les tuples

À partir de la version 5.2.0 du SDK Tablestore pour Python, les API de recherche renvoient des objets de réponse au lieu de tuples. Les versions 5.1.0 et antérieures renvoient directement des tuples. Dans les versions 5.2.1 et ultérieures, vous pouvez appeler SearchResponse.v1_response() pour obtenir un tuple compatible avec les versions précédentes. Pour le nouveau code, accédez directement aux attributs de SearchResponse afin d'éviter les erreurs de déballage si les champs de réponse sont étendus.

(
    rows,
    next_token,
    total_count,
    is_all_succeed,
    agg_results,
    group_by_results,
    search_hits,
) = response.v1_response()