Une requête de correspondance d'expression est similaire à une requête de correspondance, mais elle évalue également la position des jetons. Une ligne satisfait la condition de recherche uniquement si l'ordre et la position des jetons dans la ligne correspondent exactement à ceux du mot-clé. Si la méthode de tokenisation du champ interrogé est la tokenisation floue, la requête de correspondance d'expression offre une latence inférieure à celle d'une requête avec caractères génériques.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez 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 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 que la requête actuelle doit renvoyer. Pour obtenir uniquement le nombre de lignes correspondant aux conditions de recherche sans renvoyer les données spécifiques, définissez Limit sur 0. Tablestore renvoie alors le nombre de lignes correspondantes sans les données de la table. |
|
get_total_count |
Indique s'il faut renvoyer le nombre total de lignes correspondant aux conditions de recherche. Valeur par défaut : false. La valeur false spécifie que le nombre total de lignes n'est pas renvoyé. Si vous définissez ce paramètre sur true, les performances de la requête sont dégradées. |
|
query_type |
Type de requête. Pour utiliser une requête de correspondance d'expression, définissez ce paramètre sur |
|
field_name |
Nom du champ à faire correspondre. La requête de correspondance d'expression s'applique aux champs TEXT. |
|
text |
Mot-clé utilisé pour faire correspondre la valeur du champ lors d'une requête de correspondance d'expression. Si le champ à faire correspondre est un champ TEXT, le mot-clé est divisé en plusieurs jetons selon le type d'analyseur spécifié lors de la création de l'index de recherche. Si vous ne spécifiez pas le type d'analyseur lors de la création de l'index de recherche, une tokenisation par mot unique est effectuée. Par exemple, si vous effectuez une requête de correspondance d'expression avec l'expression « this is », les résultats « ..., this is tablestore » et « this is a table » sont renvoyés. Les résultats « this table is ... » ou « is this a table » ne sont pas renvoyés. |
|
columns_to_get |
Indique s'il faut renvoyer toutes les colonnes de chaque ligne correspondant aux conditions de recherche. Vous pouvez configurer return_type et return_names pour ce paramètre.
|
Exemples
L'exemple de code suivant montre comment utiliser une requête de correspondance d'expression pour interroger les lignes dont la valeur de la colonne text correspond à « text keyword » :
$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_PHRASE_QUERY,
'query' => array(
'field_name' => 'text',
'text' => 'text keyword'
)
),
'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 match, requête de correspondance d'expression, requête prefix, requête range, requête wildcard, requête Boolean, requête geo, requête nested et requête exists. Vous pouvez utiliser différentes méthodes de requête pour interroger des données selon plusieurs dimensions en fonction de vos besoins métier.
Si vous souhaitez trier ou paginer les lignes correspondant aux conditions de recherche, vous pouvez utiliser la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez Tri et pagination.
Si vous souhaitez regrouper l'ensemble des résultats en fonction d'une colonne spécifique, vous pouvez utiliser la fonctionnalité de regroupement (distinct). Ainsi, les données du type spécifié n'apparaissent qu'une seule fois dans les résultats de la requête. Pour plus d'informations, consultez Regroupement (distinct).
Si vous souhaitez analyser les données d'une table de données, par exemple pour obtenir les valeurs extrêmes, la somme et le nombre total de lignes, vous pouvez effectuer des opérations d'agrégation ou exécuter des instructions SQL. Pour plus d'informations, consultez Agrégation et Requête SQL.
Si vous souhaitez obtenir rapidement toutes les lignes correspondant aux conditions de recherche sans avoir besoin de les trier, vous pouvez appeler les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez Analyse parallèle.