Tous les produits
Search
Centre de documentation

Tablestore:Mise en surbrillance

Dernière mise à jour :Aug 19, 2026

Lors de la création d'un index de recherche, activez la fonctionnalité de mise en surbrillance pour un champ Text. Ainsi, lors de l'interrogation des données via cet index, configurez les paramètres de surbrillance pour mettre en évidence les chaînes de requête dans les segments des lignes correspondant aux conditions de recherche.

Scénarios

Utilisez la fonctionnalité de mise en surbrillance lors d'une recherche en texte intégral pour surligner les chaînes de requête dans les segments des lignes correspondant aux critères de recherche. Cette fonctionnalité convient à des scénarios tels que la recherche web, la récupération d'historiques de discussion et la recherche documentaire.

Présentation de la fonctionnalité

La mise en surbrillance permet de surligner le texte correspondant ou lié aux chaînes de requête dans les résultats de recherche. Elle améliore l'efficacité de la récupération d'informations en permettant aux utilisateurs de localiser rapidement les termes recherchés. Vous pouvez également l'utiliser pour identifier avec précision les informations requises dans des données imbriquées à structure complexe, comme le format JSON. Par défaut, Tablestore utilise <em></em> pour mettre en surbrillance les chaînes de requête dans les résultats.

Pour utiliser la fonctionnalité de mise en surbrillance, effectuez les configurations suivantes :

  1. Lors de la création d'un index de recherche, définissez le paramètre enableHighlighting sur True pour un champ Text. Pour plus d'informations, consultez Créer un index de recherche.

    Important

    La mise en surbrillance ne peut être activée que pour les champs Text.

  2. Lors de l'utilisation de la fonctionnalité de mise en surbrillance dans une requête, spécifiez un style personnalisé en configurant divers paramètres, tels que la méthode d'encodage des fragments de texte mis en surbrillance, le nombre maximal de fragments à renvoyer par ligne, ainsi que les balises d'ouverture et de fermeture.

Par exemple, si vous activez la mise en surbrillance pour un champ Text lors de la création d'un index de recherche, puis effectuez une requête de correspondance de phrase pour rechercher la chaîne West Lake dans ce champ, une ligne dont la valeur est Hangzhou West Lake Scenic Area satisfera les conditions. Le segment de texte renvoyé sera alors mis en forme comme suit : Hangzhou <em>West Lake</em> Scenic Area.

Remarques d'utilisation

  • Si vous activez la mise en surbrillance dans une requête MatchQuery ou MatchPhraseQuery, les chaînes de requête dans les résultats peuvent être mises en évidence à l'aide de plusieurs balises d'ouverture (preTag) et de fermeture (postTag).

  • Si la méthode de tokenisation d'un champ Text est basée sur l'unité sémantique maximale (MaxWord), la mise en surbrillance n'est pas prise en charge lors de l'exécution d'une requête MatchPhraseQuery sur ce champ.

  • Si vous souhaitez renvoyer plusieurs fragments, les chaînes de requête au sein de ces fragments peuvent être scindées. Dans ce cas, il est possible que la mise en surbrillance ne s'applique pas correctement.

Opération API

Pour utiliser la fonctionnalité de mise en surbrillance, appelez l'opération Search et définissez le type de requête sur TermQuery, TermsQuery, MatchQuery, MatchPhraseQuery, PrefixQuery, WildcardQuery ou NestedQuery.

Paramètres

Dans la plupart des cas, configurez les paramètres Highlight pour utiliser la mise en surbrillance. Pour les sous-champs d'un champ imbriqué, configurez les paramètres InnerHits.

Paramètres Highlight

Nom

Type

Description

fieldHighlightParams (obligatoire)

Map<String, HighlightParameter>

Les noms des champs et les paramètres de fragmentation. La clé correspond au nom du champ dont vous souhaitez renvoyer le résumé et les résultats de mise en surbrillance. La valeur est l'objet HighlightParameter associé à ce champ. Le champ doit avoir la synthèse et la mise en surbrillance activées, et doit être utilisé dans une condition de requête prise en charge.

highlightEncoder (facultatif)

HighlightEncoder

La méthode d'encodage du texte original dans les fragments mis en surbrillance. Valeurs possibles :

  • PLAIN (par défaut) : N'encode pas le texte original.

  • HTML : Échappe le texte original au format HTML. Utilisez cette valeur si vous affichez les résultats sur une page web. Les caractères <, >, ", ' et / sont respectivement échappés en &lt;, &gt;, &quot;, &#x27; et &#x2F;.

fieldHighlightParams[].numberOfFragments (facultatif)

Integer

Le nombre maximal de fragments mis en surbrillance à renvoyer pour un champ. Il est recommandé de définir ce paramètre sur 1.

fieldHighlightParams[].fragmentSize (facultatif)

Integer

La longueur cible de chaque fragment. La valeur par défaut est 100. La longueur réelle du fragment peut différer de cette valeur.

fieldHighlightParams[].preTag (facultatif)

String

La balise d'ouverture pour un terme correspondant. La valeur par défaut est <em>. Vous pouvez spécifier une balise personnalisée telle que <b>. Vous devez configurer conjointement preTag et postTag. Les caractères pris en charge sont < > " ' /, a-z, A-Z et 0-9.

fieldHighlightParams[].postTag (facultatif)

String

La balise de fermeture pour un terme correspondant. La valeur par défaut est </em>. Vous pouvez spécifier une balise personnalisée telle que </b>. Vous devez configurer conjointement preTag et postTag. Les caractères pris en charge sont identiques à ceux de preTag.

fieldHighlightParams[].highlightFragmentOrder (facultatif)

HighlightFragmentOrder

L'ordre dans lequel plusieurs fragments mis en surbrillance sont renvoyés. TEXT_SEQUENCE (par défaut) trie les fragments selon leur position dans le texte original. SCORE trie les fragments selon les scores de pertinence des termes correspondants.

Paramètres InnerHits

Paramètre

Description

sort

La règle de tri pour les lignes enfants du champ imbriqué.

offset

La position de départ des lignes enfants à renvoyer si le champ imbriqué contient plusieurs lignes enfants.

limit

Le nombre maximal de lignes enfants à renvoyer si le champ imbriqué contient plusieurs lignes enfants. Valeur par défaut : 3.

highlight

Les paramètres de mise en surbrillance pour les sous-champs du champ imbriqué. Pour plus d'informations, consultez Paramètres Highlight.

Méthodes

Important

La fonctionnalité de mise en surbrillance est disponible uniquement via les SDK Tablestore.

Avant d'utiliser la mise en surbrillance, assurez-vous d'avoir effectué les préparatifs suivants :

Vous pouvez utiliser les SDK Tablestore suivants pour exploiter la fonctionnalité de mise en surbrillance : SDK Tablestore pour Java, SDK Tablestore pour Go, SDK Tablestore pour Python et SDK Tablestore pour Node.js. Cet exemple utilise le SDK Tablestore pour Java.

Utiliser la mise en surbrillance lors de l'interrogation de champs non imbriqués

L'exemple suivant utilise une requête MatchQuery pour récupérer les lignes dont le champ description contient le terme tablestore. Les termes correspondants dans les fragments renvoyés sont entourés des balises <b> et </b>. Le champ description est un champ Text pour lequel la synthèse et la mise en surbrillance sont activées.

String tableName = "example_table";
String indexName = "example_index";

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore");

HighlightParameter highlightParameter = new HighlightParameter();
highlightParameter.setPreTag("<b>");
highlightParameter.setPostTag("</b>");

Highlight highlight = new Highlight();
highlight.addFieldHighlightParam("description", highlightParameter);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setHighlight(highlight);
searchQuery.setLimit(10);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
    HighlightResultItem resultItem = hit.getHighlightResultItem();
    if (resultItem == null) {
        continue;
    }
    HighlightField field = resultItem.getHighlightFieldByName("description");
    if (field != null) {
        System.out.println(field.getFragments());
    }
}

Utiliser la mise en surbrillance lors de l'interrogation de champs imbriqués

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("items.description");
matchQuery.setText("hangzhou");

HighlightParameter parameter = new HighlightParameter();
parameter.setPreTag("<em>");
parameter.setPostTag("</em>");
Highlight highlight = new Highlight();
highlight.addFieldHighlightParam("items.description", parameter);

InnerHits innerHits = new InnerHits();
innerHits.setLimit(3);
innerHits.setSort(new Sort(Arrays.asList(
        new ScoreSort(), new DocSort(SortOrder.ASC))));
innerHits.setHighlight(highlight);

NestedQuery nestedQuery = new NestedQuery();
nestedQuery.setPath("items");
nestedQuery.setQuery(matchQuery);
nestedQuery.setScoreMode(ScoreMode.None);
nestedQuery.setInnerHits(innerHits);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(nestedQuery);

Règles de facturation

L'utilisation de la fonctionnalité de mise en surbrillance lors de l'interrogation des données n'affecte pas les règles de facturation existantes de Tablestore.

Lorsque vous utilisez un index de recherche pour interroger des données, vous êtes facturé pour le débit de lecture consommé. Pour plus d'informations, consultez Éléments facturables des index de recherche.

FAQ

Références