Utilisez le SDK Tablestore pour Python afin d'interroger un champ Text en fonction de l'ordre et des positions des jetons.
Prérequis
Installez le SDK Tablestore pour Python et initialisez un client.
Description
Une requête de correspondance d'expression recherche dans un champ Text (voir Types de chaîne) les jetons qui apparaissent dans l'ordre et aux positions spécifiés. L'analyseur configuré pour l'index de recherche analyse à la fois la valeur du champ et le texte de la requête. Contrairement à une Requête de correspondance, qui vérifie uniquement la correspondance des jetons, une requête de correspondance d'expression vérifie également leur ordre et leurs positions. Utilisez le paramètre slop pour autoriser des écarts entre les jetons adjacents.
MatchPhraseQuery(field_name, text, weight=None, slop=None)
L'exemple suivant interroge les lignes dont le champ description contient les jetons tablestore et durable consécutivement et dans l'ordre.
query = MatchPhraseQuery("description", "tablestore durable")
response = client.search(
"example_table",
"example_index",
SearchQuery(
query,
sort=Sort([ScoreSort()]),
limit=10,
get_total_count=True,
),
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
for hit in response.search_hits:
print(hit.score, hit.row)
Paramètres
Requête de recherche
La méthode search accepte les paramètres suivants.
|
Nom |
Type |
Description |
|
table_name (obligatoire) |
|
Le nom de la table de données. |
|
index_name (obligatoire) |
|
Le nom de l'index de recherche. |
|
search_query (obligatoire) |
|
La condition de requête et les configurations de requête courantes. |
|
columns_to_get (facultatif) |
|
La configuration des colonnes à renvoyer. Si ce paramètre n'est pas spécifié, seules les colonnes de clé primaire sont renvoyées. |
|
routing_keys (facultatif) |
|
Les valeurs de clé primaire des champs de routage personnalisés. Ce paramètre n'est pas requis si le routage personnalisé n'est pas configuré. |
|
timeout_s (facultatif) |
|
Le délai d'expiration de la requête en secondes. Si ce paramètre n'est pas spécifié, le délai d'expiration au niveau du client est utilisé. |
Configuration de la requête
Le paramètre search_query est de type SearchQuery et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
query (obligatoire) |
|
La condition de requête. Définissez ce paramètre sur |
|
sort (facultatif) |
|
L'ordre de tri des résultats. Pour plus d'informations, consultez la rubrique Trier et paginer les résultats. |
|
get_total_count (facultatif) |
|
Indique s'il faut renvoyer le nombre total de lignes correspondantes. Valeur par défaut : |
|
next_token (facultatif) |
|
Le jeton de pagination. Transmettez le paramètre |
|
offset (facultatif) |
|
Le décalage à partir duquel la requête commence. Utilisez ce paramètre pour une pagination peu profonde. |
|
limit (facultatif) |
|
Le nombre maximal de lignes à renvoyer. Si ce paramètre est défini sur |
|
aggs (facultatif) |
|
Les configurations d'agrégation de métriques. Pour plus d'informations, consultez la rubrique Agrégation. |
|
group_bys (facultatif) |
|
Les configurations de regroupement. Pour plus d'informations, consultez la rubrique Agrégation. |
|
collapse_field (facultatif) |
|
La configuration de réduction des résultats. Pour plus d'informations, consultez la rubrique Réduire les résultats de la requête. |
|
highlight (facultatif) |
|
La configuration de résumé et de mise en surbrillance pour les champs |
Condition de correspondance d'expression
Le paramètre search_query.query est de type MatchPhraseQuery et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
field_name (obligatoire) |
|
Le nom du champ |
|
text (obligatoire) |
|
Le texte de la requête. Il est analysé par l'analyseur de champ et mis en correspondance selon l'ordre et les positions des jetons. |
|
weight (facultatif) |
|
Le poids de la requête, qui doit être un nombre à virgule flottante positif. Valeur par défaut : |
|
slop (facultatif) |
|
L'écart positionnel maximal autorisé entre les jetons de requête adjacents. Valeur par défaut : |
Colonnes renvoyées
Le paramètre columns_to_get est de type ColumnsToGet et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
column_names (facultatif) |
|
Les noms des colonnes d'attribut à renvoyer. Spécifiez ce paramètre uniquement lorsque |
|
return_type (facultatif) |
|
Le mode de retour des colonnes. |
Réponse
La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les champs principaux.
|
Champ |
Type |
Description |
|
rows |
|
Les lignes renvoyées par la requête. Le nombre ne dépasse pas la valeur de |
|
next_token |
|
Le jeton pour la page suivante. Une valeur vide indique qu'aucune autre donnée n'est disponible. |
|
total_count |
|
Le nombre de lignes correspondantes. La valeur dépend du paramètre |
|
is_all_succeed |
|
Indique si toutes les partitions d'index ont été interrogées. Si la valeur est |
|
agg_results |
|
Les résultats d'agrégation de métriques. Ce champ est vide si le paramètre |
|
group_by_results |
|
Les résultats de regroupement. Ce champ est vide si le paramètre |
|
search_hits |
|
Les occurrences de recherche, incluant des informations étendues telles que les lignes, les scores de pertinence et les mises en surbrillance. |
Réponse compatible avec les tuples
À partir de la version 5.2.0 du SDK Tablestore pour Python, les API de recherche renvoient des objets de réponse au lieu de tuples. Les versions 5.1.0 et antérieures renvoient directement des tuples. Dans les versions 5.2.1 et ultérieures, vous pouvez appeler la méthode SearchResponse.v1_response() pour obtenir un tuple compatible avec les versions antérieures. Pour le nouveau code, accédez directement aux attributs de l'objet SearchResponse afin d'éviter les erreurs de déballage si les champs de réponse sont étendus.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()