Tous les produits
Search
Centre de documentation

Tablestore:Effectuer une requête de correspondance

Dernière mise à jour :Sep 22, 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 et les mots-clés utilisés pour les requêtes de correspondance, selon l'analyseur spécifié. Tablestore exécute ainsi les requêtes de correspondance sur la base de ces jetons. Nous vous recommandons d'utiliser l'opération MatchPhraseQuery pour effectuer des requêtes de phrase sur les colonnes utilisant une tokenisation floue, afin de garantir des performances élevées 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 à partir de laquelle la requête actuelle commence.

limit

Nombre maximal de lignes que la requête actuelle doit renvoyer.

Pour interroger uniquement le nombre de lignes correspondant aux conditions de requête sans récupérer les données spécifiques des lignes, définissez le paramètre limit sur 0.

get_total_count

Indique si le nombre total de lignes correspondant aux conditions de requête doit être renvoyé. La valeur par défaut est false, ce qui signifie 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 diminuent.

query_type

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

field_name

Nom de la colonne à interroger.

La colonne peut être de type TEXT.

text

Mot-clé utilisé pour faire correspondre la valeur de la colonne lors d'une requête de correspondance.

Si la colonne à interroger 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 est appliquée si vous ne spécifiez pas le type d'analyseur lors de la création de l'index de recherche.

Par exemple, si la colonne à interroger est de type TEXT et que le type d'analyseur est la tokenisation par mot unique, lorsque vous effectuez une requête de correspondance avec la phrase « this is », les résultats de requête tels que « ..., this is tablestore », « is this tablestore », « tablestore is cool », « this » et « is » sont renvoyés.

operator

Opérateur logique. Par défaut, l'opérateur OR est utilisé, ce qui signifie qu'une ligne satisfait aux conditions de requête lorsque la valeur de la colonne contient au moins le nombre minimal de jetons.

Si vous définissez l'opérateur sur AND, la ligne satisfait aux conditions de requête uniquement si la valeur de la colonne contient tous les jetons.

minimum_should_match

Nombre minimal de jetons correspondants contenus dans la valeur de la colonne.

Une ligne est renvoyée uniquement si la valeur de la colonne interrogée dans cette ligne contient au moins le 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

Indique s'il faut renvoyer toutes les colonnes des lignes correspondant aux conditions de requête. Vous pouvez spécifier les paramètres return_type et return_names.

  • Si vous définissez return_type sur ColumnReturnTypeConst::RETURN_SPECIFIED, vous pouvez utiliser return_names pour spécifier les colonnes à renvoyer.

  • Si vous définissez le paramètre return_type sur ColumnReturnTypeConst::RETURN_ALL, toutes les colonnes sont renvoyées.

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

  • Si vous définissez le paramètre return_type 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 phrase correspondante, 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 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 requête, vous pouvez utiliser la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la section 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 la section 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 les sections Agrégation et Requête SQL.

  • Si vous souhaitez obtenir rapidement toutes les lignes correspondant aux conditions de requête 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 la section Analyse parallèle.