Tous les produits
Search
Centre de documentation

Tablestore:Requête avec caractères génériques

Dernière mise à jour :Aug 20, 2026

Une requête avec caractères génériques utilisant le SDK Tablestore pour Java exploite les motifs * et ? pour faire correspondre des données dans les champs Keyword, Text ou FuzzyKeyword.

Prérequis

Installez le SDK Tablestore pour Java et initialisez un client.

Description de la fonctionnalité

Une requête avec caractères génériques compare un champ indexé à un motif contenant des caractères génériques. Sa sémantique de correspondance est similaire à l'opérateur SQL LIKE, mais le motif utilise * et ? comme caractères génériques. Pour un champ Keyword ou FuzzyKeyword, le motif est comparé à la valeur complète du champ. Pour un champ Text, le motif est comparé à chaque jeton généré à partir de la valeur du champ, sans que le motif lui-même ne soit tokenisé. Pour plus d'informations sur les types de champs pris en charge, consultez la rubrique Types de chaînes. La correspondance respecte la casse.

Un motif peut commencer par un caractère générique et prend en charge les caractères suivants :

  • * correspond à zéro ou plusieurs caractères.

  • ? correspond à n'importe quel caractère unique.

Par exemple, table*e correspond à tablestore. Le motif hang*u correspond à hangu et à hangzhou. Le motif hang?u correspond à hangxu mais pas à hangu.

Pour rechercher des valeurs contenant une chaîne spécifique, comme avec le motif *word* (équivalent à SQL WHERE field_a LIKE '%word%'), utilisez une requête avec caractères génériques basée sur les jetons. Cette approche garantit que les performances de la requête ne se dégradent pas avec l'augmentation du volume de données.

Remarque

Pour exclure les données correspondant à un motif, ajoutez l'objet WildcardQuery à BoolQuery.mustNotQueries. Cette configuration équivaut à l'opérateur SQL NOT LIKE. Pour savoir comment configurer BoolQuery, consultez la rubrique Requête booléenne.

Définissez le type de requête sur WildcardQuery lors de l'appel à search. Utilisez SearchQuery pour configurer la limite de résultats, le suivi du nombre total et d'autres paramètres généraux de la requête.

SearchResponse search(SearchRequest request)

L'exemple suivant interroge les valeurs Keyword du champ product_name qui correspondent au motif table*e. La requête renvoie jusqu'à 10 lignes ainsi que le nombre total de correspondances.

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

WildcardQuery wildcardQuery = new WildcardQuery();
wildcardQuery.setFieldName("product_name");
wildcardQuery.setValue("table*e");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(wildcardQuery);
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);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

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 de données.

indexName (obligatoire)

String

Le nom de l'index de recherche.

searchQuery (obligatoire)

SearchQuery

La condition de requête et les paramètres généraux de la requête.

columnsToGet (facultatif)

SearchRequest.ColumnsToGet

Les colonnes à renvoyer. Si ce paramètre n'est pas configuré, 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 distinct n'est configuré pour la requête.

routingValues (facultatif)

List<PrimaryKey>

Les valeurs de clé primaire correspondant aux champs de routage personnalisés. Laissez ce paramètre non défini si le routage personnalisé n'est pas configuré.

Paramètres de la 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 un objet WildcardQuery pour une requête avec caractères génériques.

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 les détails de 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 les détails de configuration, consultez la rubrique Regrouper les résultats de requête.

sort (facultatif)

Sort

L'ordre de tri des résultats. Pour les détails de 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 faible 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 les détails de configuration, consultez la rubrique Agrégation.

groupByList (facultatif)

List<GroupBy>

Les paramètres de regroupement. Pour les détails de 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 la lecture des lignes. Lorsque vous définissez token, le SDK efface sort car le jeton contient déjà les conditions de tri.

Condition de requête

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

Nom

Type

Description

fieldName (obligatoire)

String

Le nom du champ Keyword, Text ou FuzzyKeyword à interroger.

value (obligatoire)

String

Un motif de requête contenant des caractères génériques. La longueur maximale est de 32 caractères et la correspondance respecte la casse. Pour un champ Keyword ou FuzzyKeyword, le motif est comparé à la valeur complète du champ. Pour un champ Text, le motif est comparé à chaque jeton, sans que le motif lui-même ne soit tokenisé.

weight (facultatif)

float

Le poids de pertinence de la condition de requête. La valeur doit être un nombre à virgule flottante positif. Une valeur plus élevée accroît la contribution de la condition de requête au score de pertinence BM25. Ce paramètre n'affecte ni la correspondance ni le nombre de lignes renvoyées. Il influence l'ordre des résultats uniquement lorsque ScoreSort est utilisé pour trier par score de pertinence. Valeur par défaut : 1.0.

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 de données. 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. Ne définissez pas returnAll et returnAllFromIndex sur true simultanément.

Valeurs de retour

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

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 par cette requête. 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. Si highlight est configuré, ce champ contient les données de ligne 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 poursuivre la lecture des 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.