Tous les produits
Search
Centre de documentation

Tablestore:Requête par préfixe

Dernière mise à jour :Aug 20, 2026

Une requête par préfixe avec le SDK Tablestore pour Java permet de faire correspondre des valeurs de champ ou des jetons commençant par une chaîne spécifiée et renvoie les lignes correspondantes ou leur nombre total.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description de la fonctionnalité

Une requête par préfixe fait correspondre les valeurs de champ ou les jetons d'un champ spécifié qui commencent par la chaîne de requête. Pour les champs Keyword et FuzzyKeyword (voir Types de chaînes), la valeur entière du champ doit commencer par la chaîne de requête et la correspondance respecte la casse. Pour un champ Text, une ligne correspond si l'un des jetons produits par l'analyseur commence par la chaîne de requête. La chaîne de requête elle-même n'est pas analysée en jetons.

Remarque

Pour les grands ensembles de données, utilisez le type FuzzyKeyword, optimisé pour les requêtes floues. Les performances des requêtes par préfixe sur un champ Keyword diminuent à mesure que les données indexées augmentent ; utilisez donc ce type uniquement pour les petits ensembles de données. Le type Text est pris en charge à des fins de compatibilité. L'analyse en jetons rend ses résultats dépendants de la configuration et inadaptés à la correspondance de chaînes complètes.

Pour appeler search, définissez le type de requête sur PrefixQuery et utilisez SearchQuery pour configurer le nombre de lignes renvoyées, le suivi du nombre total et d'autres comportements de requête courants.

SearchResponse search(SearchRequest request)

L'exemple suivant interroge les lignes dont le champ category est de type FuzzyKeyword et commence par hang. La requête renvoie au maximum 10 lignes ainsi que le nombre total de lignes correspondantes.

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

PrefixQuery prefixQuery = new PrefixQuery();
prefixQuery.setFieldName("category");
prefixQuery.setPrefix("hang");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(prefixQuery);
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.

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 distinct n'est défini pour la requête.

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 de 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 PrefixQuery pour une requête par préfixe.

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 Résumé et mise en surbrillance.

collapse (facultatif)

Collapse

Les paramètres de regroupement des champs, qui dédupliquent les résultats selon un champ spécifié. Pour plus de détails sur la configuration, consultez 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 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 plus de détails sur la configuration, consultez Agrégation.

groupByList (facultatif)

List<GroupBy>

Les paramètres de regroupement. Pour plus de détails sur la configuration, consultez 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 requête

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

Nom

Type

Description

fieldName (obligatoire)

String

Le nom du champ indexé à interroger.

prefix (obligatoire)

String

La chaîne de requête. Pour un champ Keyword ou FuzzyKeyword, la valeur du champ doit commencer par cette chaîne. Pour un champ Text, au moins un jeton doit commencer par cette chaîne. La chaîne de requête elle-même n'est pas analysée en jetons.

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. Valeur par défaut : false.

returnAllFromIndex (facultatif)

boolean

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

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. 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 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.