Une requête par suffixe avec le SDK Tablestore pour Java identifie les valeurs complètes du champ FuzzyKeyword se terminant 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 un client.
Les requêtes par suffixe nécessitent la version 5.17.0 ou ultérieure du SDK Tablestore pour Java.
Description de la fonctionnalité
Une requête par suffixe identifie les valeurs complètes d'un champ se terminant par une chaîne spécifique. Ce type de requête prend uniquement en charge les champs FuzzyKeyword. Pour plus d'informations sur ce type de champ, consultez la section Types de chaînes. La correspondance respecte la casse. Par exemple, la valeur de champ order-H001 correspond au suffixe H001 mais pas à h001.
Les champs FuzzyKeyword ne prennent pas en charge le tri ni l'agrégation. Si votre requête nécessite ces opérations, utilisez un autre champ compatible.
Les champs Keyword ne prennent pas en charge SuffixQuery. Pour obtenir un résultat équivalent, inversez la valeur du champ avant de l'écrire dans un champ Keyword dédié aux requêtes. Lors de l'exécution de la requête, inversez la chaîne de suffixe recherchée et exécutez une requête par préfixe (PrefixQuery) sur ce champ.
Définissez le type de requête sur SuffixQuery 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 FuzzyKeyword du champ phone se terminant par 1234. La requête renvoie jusqu'à 10 lignes ainsi que le nombre total de correspondances.
String tableName = "example_table";
String indexName = "example_index";
SuffixQuery suffixQuery = new SuffixQuery();
suffixQuery.setFieldName("phone");
suffixQuery.setSuffix("1234");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(suffixQuery);
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
Le paramètre request est un objet SearchRequest contenant les éléments suivants.
|
Nom |
Type |
Description |
|
tableName (obligatoire) |
String |
Nom de la table de données. |
|
indexName (obligatoire) |
String |
Nom de l'index de recherche. |
|
searchQuery (obligatoire) |
SearchQuery |
Condition de requête et paramètres généraux. |
|
columnsToGet (facultatif) |
SearchRequest.ColumnsToGet |
Colonnes à renvoyer. En l'absence de configuration, seules les colonnes de clé primaire sont retournées. |
|
timeoutInMillisecond (facultatif) |
int |
Délai d'expiration de la requête en millisecondes. La valeur par défaut est |
|
routingValues (facultatif) |
|
Valeurs de clé primaire correspondant aux champs de routage personnalisé. Laissez ce paramètre vide si le routage personnalisé n'est pas activé. |
Paramètres de requête
L'objet request.searchQuery est une instance de SearchQuery contenant les paramètres suivants.
|
Nom |
Type |
Description |
|
query (obligatoire) |
Query |
Condition de requête. Définissez ce paramètre sur un objet |
|
offset (facultatif) |
Integer |
Position de départ pour la requête actuelle. |
|
limit (facultatif) |
Integer |
Nombre maximal de lignes à renvoyer. Définissez ce paramètre sur |
|
collapse (facultatif) |
Collapse |
Configuration de réduction utilisée pour dédupliquer les résultats selon un champ spécifié. Pour plus d'informations, consultez la section Réduction (distinct). |
|
sort (facultatif) |
Sort |
Ordre de tri des résultats. Les champs |
|
trackTotalCount (facultatif) |
int |
Nombre maximal de lignes correspondantes à comptabiliser. La valeur par défaut est |
|
filter (facultatif) |
SearchFilter |
Filtre post-requête appliqué aux résultats de |
|
aggregationList (facultatif) |
|
Configurations d'agrégation. Les champs |
|
groupByList (facultatif) |
|
Configurations de regroupement. Les champs |
|
token (facultatif) |
byte[] |
Jeton de pagination. Utilisez la valeur |
Condition de requête
L'objet request.searchQuery.query est une instance de SuffixQuery contenant les paramètres suivants.
|
Nom |
Type |
Description |
|
fieldName (obligatoire) |
String |
Nom du champ |
|
suffix (obligatoire) |
String |
Chaîne de recherche. La valeur complète du champ doit se terminer par cette chaîne. La correspondance respecte la casse. |
|
weight (facultatif) |
float |
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 l'influence de la condition sur le score de pertinence BM25. Ce paramètre ne modifie ni les lignes correspondantes ni leur nombre. Il affecte l'ordre des résultats uniquement lorsque |
Colonnes renvoyées
L'objet request.columnsToGet est une instance de SearchRequest.ColumnsToGet contenant les paramètres suivants.
|
Nom |
Type |
Description |
|
columns (facultatif) |
|
Colonnes d'attribut à renvoyer. Configurez ce paramètre uniquement si |
|
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 |
|
returnAllFromIndex (facultatif) |
boolean |
Indique s'il faut renvoyer toutes les colonnes d'attribut indexées. La valeur par défaut est |
Valeurs de retour
La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les principaux champs.
|
Nom |
Type |
Description |
|
totalCount |
long |
Nombre de lignes correspondantes, obtenu via |
|
rows |
|
Lignes renvoyées par la requête actuelle, obtenues via |
|
nextToken |
byte[] |
Jeton pour la page suivante, obtenu via |
|
isAllSuccess |
boolean |
Indique si toutes les partitions d'index ont été interrogées avec succès, obtenu via |