Une requête de correspondance permet d'interroger les données d'une table en se basant sur des correspondances approximatives. Tablestore tokenize les valeurs des colonnes de type TEXT ainsi que les mots-clés utilisés pour les requêtes de correspondance, selon l'analyseur spécifié. Le service effectue ensuite la recherche sur la base de ces jetons. Nous vous recommandons d'utiliser l'opération MatchPhraseQuery pour les colonnes soumises à une tokenisation floue, afin de garantir des performances optimales lors des recherches floues.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer une table de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer un index de recherche.
Paramètres
|
Paramètre |
Description |
|
table_name |
Nom de la table de données. |
|
index_name |
Nom de l'index de recherche. |
|
offset |
Position de départ de la requête actuelle. |
|
limit |
Nombre maximal de lignes à renvoyer. Pour obtenir uniquement le nombre de lignes correspondant aux conditions sans récupérer leurs données, définissez le paramètre limit sur 0. |
|
get_total_count |
Indique si le nombre total de lignes correspondant aux conditions doit être renvoyé. La valeur par défaut est false (le total n'est pas renvoyé). La définition de ce paramètre sur true réduit les performances de la requête. |
|
query_type |
|
|
field_name |
Nom de la colonne à interroger. La colonne doit être de type TEXT. |
|
text |
Mot-clé utilisé pour la mise en correspondance avec la valeur de la colonne lors d'une requête de correspondance. Si la colonne interrogée est de type TEXT, le mot-clé est tokenisé en plusieurs jetons selon le type d'analyseur spécifié lors de la création de l'index de recherche. Par défaut, une tokenisation par mot unique s'applique si aucun analyseur n'est spécifié. Par exemple, si la colonne est de type TEXT avec une tokenisation par mot unique, une requête avec la phrase « this is » renvoie des résultats tels que « ..., this is tablestore », « is this tablestore », « tablestore is cool », « this » et « is ». |
|
operator |
Opérateur logique. Par défaut, l'opérateur OR s'applique : une ligne satisfait aux conditions si la valeur de la colonne contient au moins le nombre minimal de jetons requis. Si vous définissez l'opérateur sur AND, la ligne ne satisfait aux conditions que si la valeur de la colonne contient tous les jetons. |
|
minimum_should_match |
Nombre minimal de jetons correspondants devant figurer dans la valeur de la colonne. Une ligne est renvoyée uniquement si la valeur de la colonne interrogée contient au moins ce nombre minimal de jetons correspondants. Remarque
Le paramètre minimum_should_match doit être utilisé conjointement avec l'opérateur logique OR. |
|
columns_to_get |
Définit les colonnes à renvoyer pour les lignes correspondant aux conditions. Spécifiez les paramètres return_type et return_names.
|
Exemple
L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne text correspond à « ots text php keyword » dans la table de données.
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'search_query' => array(
'offset' => 0,
'limit' => 2,
'get_total_count' => true,
'query' => array(
'query_type' => QueryTypeConst::MATCH_QUERY,
'query' => array(
'field_name' => 'text',
'text' => 'ots text php keyword',
// 'operator' => QueryOperatorConst::PBAND,
'operator' => QueryOperatorConst::PBOR,// Use the minimum_should_match parameter together with the OR logical operator.
'minimum_should_match' => 3
)
),
'sort' => array(
array(
'field_sort' => array(
'field_name' => 'keyword',
'order' => SortOrderConst::SORT_ORDER_ASC
)
),
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('text')
)
);
$response = $otsClient->search($request);
FAQ
Références
-
Lorsque vous utilisez un index de recherche pour interroger des données, vous pouvez recourir aux méthodes de requête suivantes : requête term, requête terms, requête match all, requête de correspondance, requête de correspondance de phrase, requête prefix, requête range, requête wildcard, requête booléenne, requête geo, requête nested et requête exists. Vous pouvez combiner différentes méthodes pour interroger les données selon plusieurs dimensions, en fonction de vos besoins métier.
Pour trier ou paginer les lignes correspondant aux conditions de requête, utilisez la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
Pour regrouper l'ensemble des résultats en fonction d'une colonne spécifique, utilisez la fonctionnalité de regroupement (distinct). Les données du type spécifié n'apparaissent alors qu'une seule fois dans les résultats. Pour plus d'informations, consultez la rubrique Regroupement (distinct).
Pour analyser les données d'une table (valeurs extrêmes, somme, nombre total de lignes, etc.), effectuez des opérations d'agrégation ou exécutez des instructions SQL. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Pour obtenir rapidement toutes les lignes correspondant aux conditions sans tri, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la rubrique Balayage parallèle.