Tous les produits
Search
Centre de documentation

Tablestore:Match query

Dernière mise à jour :Aug 20, 2026

Une requête de correspondance (match query) avec le SDK Tablestore pour Java recherche dans les champs Text ou Keyword et renvoie les lignes satisfaisant aux conditions de correspondance, accompagnées de scores de pertinence.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description de la fonctionnalité

Une requête de correspondance recherche dans les champs Text ou Keyword. Pour plus d'informations sur les types de champs, consultez la rubrique Types de chaînes. Ces deux types de champs présentent des comportements de correspondance différents :

  • Text : L'analyseur configuré lors de la création de l'index de recherche analyse la valeur du champ et le texte de la requête. À défaut d'analyseur configuré, la tokenisation par mot unique s'applique par défaut. L'opérateur OR par défaut fait correspondre une valeur de champ contenant n'importe quel jeton de la requête. Utilisez l'opérateur AND pour exiger la correspondance de tous les jetons de la requête ou spécifiez le nombre minimal de jetons devant correspondre.

  • Keyword : Ni la valeur du champ ni le texte de la requête ne sont analysés. Une ligne correspond uniquement si la valeur complète du champ est égale au texte de la requête.

Une requête de correspondance n'exige pas que les jetons correspondants soient adjacents ou dans le même ordre que le texte de la requête. Pour faire correspondre les jetons dans l'ordre, utilisez une requête de correspondance de phrase. Si un champ Text utilise l'analyseur flou et que vous avez besoin d'une recherche floue haute performance, nous recommandons également une requête de correspondance de phrase.

L'exemple suivant interroge les lignes dont le champ description contient le jeton tablestore ou durable et renvoie jusqu'à 10 lignes, le nombre total de lignes correspondantes ainsi que les scores de pertinence.

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

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

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
    System.out.println(hit.getRow());
    System.out.println(hit.getScore());
}

Paramètres

Requête de recherche

request est un objet SearchRequest qui contient les paramètres suivants.

Nom

Type

Description

tableName (obligatoire)

String

Le nom de la table.

indexName (obligatoire)

String

Le nom de l'index de recherche.

searchQuery (obligatoire)

SearchQuery

La condition de requête et les paramètres de requête courants.

columnsToGet (facultatif)

SearchRequest.ColumnsToGet

Les paramètres des colonnes renvoyées. Si vous omettez ce paramètre, seules les colonnes de clé primaire sont renvoyées.

timeoutInMillisecond (facultatif)

int

Le délai d'expiration de la requête au niveau de la demande, en millisecondes. La valeur par défaut est -1, ce qui signifie qu'aucun délai d'expiration de requête distinct n'est défini.

routingValues (facultatif)

List<PrimaryKey>

Les valeurs de clé primaire pour les champs de routage personnalisés. Omettez ce paramètre si l'index n'utilise pas le routage personnalisé.

Paramètres de requête

request.searchQuery est un objet SearchQuery qui contient les paramètres suivants.

Nom

Type

Description

query (obligatoire)

Query

La condition de requête. Définissez ce paramètre sur MatchQuery pour une requête de correspondance.

offset (facultatif)

Integer

La position de départ de la requête.

limit (facultatif)

Integer

Le nombre maximal de lignes à renvoyer. Définissez ce paramètre sur 0 pour ne renvoyer aucune ligne.

highlight (facultatif)

Highlight

Les paramètres de résumé et de mise en surbrillance pour les champs Text. Pour plus de détails sur la configuration, consultez la rubrique Résumé et mise en surbrillance.

collapse (facultatif)

Collapse

Les paramètres de regroupement (collapse), qui dédupliquent les résultats selon un champ spécifié. Pour plus de détails sur la configuration, consultez la rubrique Regrouper les résultats de requête.

sort (facultatif)

Sort

L'ordre de tri des résultats. Pour plus de détails sur la configuration, consultez la rubrique Trier et paginer les résultats.

trackTotalCount (facultatif)

int

Le nombre maximal attendu de lignes correspondantes à compter. La valeur par défaut est TRACK_TOTAL_COUNT_DISABLED, ce qui désactive le comptage. Définissez ce paramètre sur TRACK_TOTAL_COUNT pour compter toutes les lignes correspondantes. Une valeur plus petite améliore les performances de la requête.

filter (facultatif)

SearchFilter

Un filtre appliqué aux résultats de query.

aggregationList (facultatif)

List<Aggregation>

Les paramètres d'agrégation. Pour plus de détails sur la configuration, consultez la rubrique Agrégation.

groupByList (facultatif)

List<GroupBy>

Les paramètres de regroupement. Pour plus de détails sur la configuration, consultez la rubrique Agrégation.

token (facultatif)

byte[]

Le jeton de pagination. Définissez ce paramètre sur la valeur nextToken de la réponse précédente pour continuer à lire les lignes. Lorsque vous définissez token, le SDK efface sort car le jeton contient déjà les conditions de tri.

Condition de correspondance

request.searchQuery.query est un objet MatchQuery qui contient les paramètres suivants.

Nom

Type

Description

fieldName (obligatoire)

String

Le nom du champ d'index Text ou Keyword à interroger.

text (obligatoire)

String

Le texte de la requête. Pour un champ Text, l'analyseur de champ analyse le texte de la requête. Pour un champ Keyword, le texte de la requête n'est pas analysé.

operator (facultatif)

QueryOperator

L'opérateur utilisé pour combiner les jetons de requête. OR (par défaut) fait correspondre une ligne si n'importe quel jeton correspond. AND exige que tous les jetons correspondent.

minShouldMatch (facultatif)

String ou int

Le nombre minimal de jetons de requête devant correspondre lorsque operator est OR. Spécifiez un entier tel que 2 ou une chaîne de pourcentage telle que "75%".

weight (facultatif)

float

Le poids de la requête. La valeur par défaut est 1.0 et la valeur doit être un nombre à virgule flottante positif. Une valeur plus élevée augmente la contribution de cette requête au score de pertinence sans modifier l'étendue de la correspondance.

Important

setMinimumShouldMatch(Integer) est obsolète. Utilisez setMinShouldMatch(int) ou setMinShouldMatch(String).

Colonnes renvoyées

request.columnsToGet est un objet SearchRequest.ColumnsToGet qui contient les paramètres suivants.

Nom

Type

Description

columns (facultatif)

List<String>

Les colonnes d'attribut à renvoyer. Définissez ce paramètre uniquement si returnAll et returnAllFromIndex sont tous deux définis sur false. Si vous omettez ce paramètre, seules les colonnes de clé primaire sont renvoyées.

returnAll (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut de la table. La valeur par défaut est false.

returnAllFromIndex (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut indexées. La valeur par défaut est false. Ce paramètre et returnAll ne peuvent pas être tous deux définis sur true.

Valeurs de retour

Réponse de la requête

La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les principaux champs.

Nom

Type

Description

totalCount

long

Le nombre de lignes correspondantes. Appelez getTotalCount() pour obtenir la valeur. La valeur renvoyée dépend du paramètre trackTotalCount.

rows

List<Row>

Les lignes renvoyées dans la réponse actuelle. Appelez getRows() pour obtenir la valeur. Le nombre de lignes ne dépasse pas limit.

searchHits

List<SearchHit>

Les résultats de la requête (hits). Appelez getSearchHits() pour obtenir la valeur. Ce champ contient les scores de pertinence ainsi que les résultats de résumé et de mise en surbrillance.

nextToken

byte[]

Le jeton de la page suivante. Appelez getNextToken() pour obtenir la valeur. Si la valeur n'est pas null, définissez-la comme token dans la requête suivante pour continuer à lire les lignes.

isAllSuccess

boolean

Indique si toutes les partitions d'index ont été interrogées avec succès. Appelez isAllSuccess() pour obtenir la valeur. Si la valeur est false, la réponse contient des résultats partiels et totalCount peut être inférieur au nombre réel de lignes correspondantes.

Résultat de requête (Hit)

response.searchHits[] est un objet SearchHit qui contient les principaux champs suivants.

Nom

Type

Description

row

Row

La ligne correspondante. Appelez getRow() pour obtenir la valeur.

score

Double

Le score de pertinence. Appelez getScore() pour obtenir la valeur. Lorsque ScoreSort est utilisé, ce champ contient le score réel. Les jetons correspondants et weight affectent le score.

highlightResultItem

HighlightResultItem

Le résultat de résumé et de mise en surbrillance. Appelez getHighlightResultItem() pour obtenir la valeur.

Exemples

Correspondre à tous les jetons de la requête

Définissez operator sur AND pour faire correspondre une ligne uniquement si la valeur du champ contient tous les jetons de la requête.

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");
matchQuery.setOperator(QueryOperator.AND);

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

Définir le nombre minimal de jetons correspondants

Lorsque l'opérateur OR est utilisé, définissez minShouldMatch pour spécifier le nombre minimal de jetons de requête devant correspondre. L'exemple suivant exige au moins deux jetons correspondants.

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable cloud");
matchQuery.setOperator(QueryOperator.OR);
matchQuery.setMinShouldMatch(2);

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