Tous les produits
Search
Centre de documentation

Tablestore:Effectuer une requête de correspondance

Dernière mise à jour :Aug 18, 2026

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

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

Type de requête. Définissez ce paramètre sur QueryTypeConst::MATCH_QUERY.

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.

  • Si return_type est défini sur ColumnReturnTypeConst::RETURN_SPECIFIED, utilisez return_names pour spécifier les colonnes à renvoyer.

  • Si return_type est défini sur ColumnReturnTypeConst::RETURN_ALL, toutes les colonnes sont renvoyées.

  • Si return_type est défini sur ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX, toutes les colonnes de l'index de recherche sont renvoyées.

  • Si return_type est défini sur ColumnReturnTypeConst::RETURN_NONE, seules les colonnes de clé primaire sont renvoyées.

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.