Tous les produits
Search
Centre de documentation

Tablestore:Résumé et mise en surbrillance

Dernière mise à jour :Aug 19, 2026

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

Prérequis

Installez le SDK Tablestore pour Java et initialisez un client.

Description de la fonctionnalité

Le résumé et la mise en surbrillance extraient des fragments de texte situés autour des termes correspondant à une requête, puis entourent ces termes de balises d'ouverture et de fermeture. Utilisez ces fragments pour afficher le contexte des correspondances de requête. Cette fonctionnalité prend uniquement en charge les champs Text.

Avant d'utiliser le résumé et la mise en surbrillance, définissez enableHighlighting sur true pour le champ lors de la création d'un index de recherche. Dans une requête, utilisez SearchQuery.highlight pour spécifier les champs dont vous souhaitez renvoyer les fragments ainsi que les paramètres de fragmentation. Un champ doit être utilisé dans une condition de requête compatible avec le résumé et la mise en surbrillance. À défaut, aucun fragment mis en surbrillance n'est renvoyé pour ce champ.

Les types de requête suivants peuvent renvoyer des résultats de résumé et de mise en surbrillance : TermQuery, TermsQuery, MatchQuery, MatchPhraseQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, ConstScoreQuery et NestedQuery.

Pour une requête BoolQuery ou ConstScoreQuery, configurez le résumé et la mise en surbrillance pour les champs utilisés par les sous-requêtes des sept types de requête mentionnés précédemment. Pour une requête NestedQuery, configurez InnerHits.highlight afin de renvoyer les résultats de résumé et de mise en surbrillance pour les lignes enfants correspondantes. Pour plus d'informations, consultez la rubrique Requête imbriquée.

Remarque
  • Si vous utilisez MatchQuery ou MatchPhraseQuery, un terme correspondant peut être entouré de plusieurs paires de balises d'ouverture et de fermeture.

  • Si la tokenisation sémantique maximale est utilisée pour un champ Text, MatchPhraseQuery ne prend pas en charge le résumé et la mise en surbrillance.

  • Une limite de fragment peut scinder un terme correspondant. Dans ce cas, le terme n'est pas mis en surbrillance.

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.

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

Paramètres

request.searchQuery.highlight est de type Highlight. Les valeurs dans fieldHighlightParams sont des objets HighlightParameter qui configurent le comportement des fragments pour chaque champ.

Le tableau suivant utilise les chemins complets des paramètres pour décrire les deux niveaux de configuration : Highlight et HighlightParameter.

Nom

Type

Description

fieldHighlightParams (obligatoire)

Map<String, HighlightParameter>

Les noms des champs et les paramètres de fragmentation. Une clé correspond au nom d'un champ dont vous souhaitez renvoyer les résultats de résumé et de mise en surbrillance. Sa valeur est l'objet HighlightParameter pour ce champ. Le champ doit avoir le résumé et la mise en surbrillance activés 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 sous la forme &lt;, &gt;, &quot;, &#x27; et &#x2F;.

fieldHighlightParams[].numberOfFragments (facultatif)

Integer

Le nombre maximal de fragments mis en surbrillance à renvoyer pour un champ. Nous vous recommandons 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.

Réponse

Réponse de la requête

La méthode search renvoie un objet SearchResponse. Les champs suivants concernent le résumé et la mise en surbrillance.

Nom

Type

Description

searchHits

List<SearchHit>

Les résultats de la requête, obtenus en appelant getSearchHits(). Chaque élément contient les données de la ligne ainsi que les résultats de résumé et de mise en surbrillance.

isAllSuccess

boolean

Indique si toutes les partitions d'index ont été interrogées. Vous pouvez obtenir la valeur en appelant isAllSuccess(). Si la valeur est false, des résultats partiels sont renvoyés.

Résultat de requête

response.searchHits[] est de type SearchHit. Les champs suivants concernent le résumé et la mise en surbrillance.

Nom

Type

Description

row

Row

Les données de la ligne. Vous pouvez obtenir la valeur en appelant getRow().

highlightResultItem

HighlightResultItem

Les résultats de résumé et de mise en surbrillance de tous les champs de la ligne. Vous pouvez obtenir la valeur en appelant getHighlightResultItem(). La valeur est null si la ligne ne comporte aucun résultat de mise en surbrillance.

Résultat de mise en surbrillance

response.searchHits[].highlightResultItem est de type HighlightResultItem et contient le champ suivant.

Nom

Type

Description

highlightFields

Map<String, HighlightField>

Les résultats de mise en surbrillance pour les champs de la ligne. Vous pouvez obtenir la mappe en appelant getHighlightFields(). Vous pouvez également appeler getHighlightFieldByName(fieldName) pour obtenir le résultat d'un champ spécifique. La méthode renvoie null si le champ ne comporte aucun résultat de mise en surbrillance.

Fragments de champ

response.searchHits[].highlightResultItem.highlightFields[fieldName] est de type HighlightField et contient le champ suivant.

Nom

Type

Description

fragments

List<String>

Les fragments mis en surbrillance pour le champ. Vous pouvez obtenir la liste en appelant getFragments(). Les termes correspondants dans les fragments sont entourés par la balise d'ouverture et la balise de fermeture configurées.