Tous les produits
Search
Centre de documentation

Tablestore:Tri et pagination

Dernière mise à jour :Aug 18, 2026

Lorsque vous utilisez un index de recherche pour interroger des données, appliquez une méthode de tri prédéfinie ou spécifiez-en une. Les lignes répondant aux conditions de requête sont ainsi renvoyées selon l'ordre prédéfini ou spécifié. Si la réponse contient un grand nombre de lignes, localisez les données requises en configurant les paramètres limit et offset ou en utilisant des jetons.

Scénarios

Catégorie

Méthode

Fonctionnalité

Scénario

Tri

Prédéfinir une méthode de tri lors de la création d'un index de recherche

Pré-tri d'index (IndexSort)

Par défaut, les données d'un index de recherche sont triées selon les paramètres de pré-tri spécifiés par le paramètre IndexSort. Ces paramètres déterminent l'ordre par défaut de renvoi des lignes répondant aux conditions de requête.

Spécifier une méthode de tri lors de l'interrogation des données

Tri basé sur le score de pertinence des mots-clés BM25 (ScoreSort)

Utilisez ScoreSort pour trier les résultats de requête en fonction du score de pertinence des mots-clés basé sur BM25. ScoreSort convient aux scénarios tels que la recherche en texte intégral.

Tri basé sur la valeur de la clé primaire (PrimaryKeySort)

Utilisez PrimaryKeySort pour trier les résultats de requête en fonction de la valeur de la clé primaire. PrimaryKeySort convient aux scénarios où vous souhaitez trier les données selon leurs identifiants uniques.

Tri basé sur les valeurs d'une ou plusieurs colonnes (FieldSort)

Utilisez FieldSort pour trier les résultats de requête en fonction des valeurs d'une ou plusieurs colonnes. FieldSort convient aux scénarios où vous souhaitez trier les données selon des propriétés telles que le volume des ventes ou le nombre de pages vues. Dans la plupart des cas, FieldSort est utilisé dans des secteurs comme le commerce électronique, les réseaux sociaux et les médias.

Tri par distance géographique (GeoDistanceSort)

Utilisez GeoDistanceSort pour trier les résultats de requête par emplacement géographique. GeoDistanceSort convient aux scénarios où vous souhaitez trier les données en fonction de la distance par rapport à un lieu spécifique. Dans la plupart des cas, GeoDistanceSort est utilisé dans des secteurs tels que la cartographie et la logistique. Par exemple, vous pouvez trier les restaurants autour d'un lieu en fonction de leur distance par rapport à ce lieu.

Pagination

Spécifier une méthode de pagination lors de l'interrogation des données

Pagination basée sur les paramètres limit et offset

Si le nombre de lignes dans la réponse est inférieur à 100 000, utilisez cette méthode pour accéder directement à une page.

Pagination basée sur des jetons

Cette fonctionnalité renvoie les données page par page et permet uniquement de paginer vers l'arrière. Pour paginer vers l'avant, mettez en cache et utilisez un jeton précédent, car les jetons restent valides pendant la requête.

Pré-tri d'index

Par défaut, Tablestore trie les données d'un index de recherche selon un ordre de tri prédéfini, appelé pré-tri d'index (IndexSort). Lorsque vous interrogez des données, IndexSort détermine l'ordre par défaut des résultats renvoyés.

Lors de la création d'un index de recherche, personnalisez IndexSort. Si vous ne spécifiez pas ce paramètre, l'index utilise par défaut le tri par clé primaire.

Important
  • Le pré-tri d'index prend uniquement en charge PrimaryKeySort (tri par clé primaire) et FieldSort (tri par champ).

  • Vous ne pouvez pas utiliser le pré-tri d'index pour un index de recherche contenant des champs de type imbriqué.

  • Après avoir créé un index de recherche, la modification dynamique du schéma vous permet de modifier les paramètres IndexSort.

Spécifier une méthode de tri lors de l'interrogation des données

Le tri n'est possible que sur les champs pour lesquels le paramètre enable_sort_and_agg est défini sur true.

ScoreSort

ScoreSort

Trie les résultats de requête par score de pertinence, calculé à l'aide de l'algorithme BM25. Cette méthode convient aux scénarios basés sur la pertinence, tels que la recherche en texte intégral.

Important
  • Pour trier par score de pertinence, spécifiez explicitement ScoreSort. Sinon, Tablestore trie les résultats selon les paramètres IndexSort de l'index.

  • Lorsque vous utilisez ScoreSort, les champs de type FuzzyKeyword ne sont pas inclus dans le tri, et le paramètre weight n'a aucun effet sur ces champs.

'sort' => array(
    array(
        'score_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_DESC
        )
    ),
)

PrimaryKeySort

'sort' => array(
    array(
        'pk_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_ASC
        )
    ),
)

FieldSort

Utilisez FieldSort pour trier les résultats de requête en fonction des valeurs d'une ou plusieurs colonnes spécifiques.

'sort' => array(
    array(
        'field_sort' => array(
            'field_name' => 'keyword',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'mode' => SortModeConst::SORT_MODE_AVG,
        )
    ),
)

GeoDistanceSort

'sort' => array(
    array(
        'geo_distance_sort' => array(
            'field_name' => 'geo',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE,
            'points' => array('0.6,0.6')
        )
    ),
)

Combinaison de plusieurs méthodes de tri

Triez les résultats de requête en fonction des valeurs de deux colonnes dans des ordres spécifiques afin de déterminer l'ordre de renvoi des données correspondantes.

'sort' => array(
    array(
        'field_sort' => array(
            'field_name' => 'keyword',
            'order' => SortOrderConst::SORT_ORDER_ASC,
            'mode' => SortModeConst::SORT_MODE_AVG,
        )
    ),
    array(
        'pk_sort' => array(
            'order' => SortOrderConst::SORT_ORDER_ASC
        )
    ),
)

Spécifier une méthode de pagination

Configurer les paramètres limit et offset

Pagination basée sur le décalage (offset)

Utilisez la pagination basée sur le décalage lorsque le nombre total de lignes à récupérer est inférieur à 100 000. La somme de limit et offset doit être inférieure ou égale à 100 000, et la valeur maximale pour limit est de 100.

Remarque

Pour augmenter le seuil limit, consultez la rubrique Comment augmenter la limite de l'API Search à 1 000 ?.

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 10,
        'limit' => 10,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::MATCH_ALL_QUERY
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'keyword',
                    'order' => SortOrderConst::SORT_ORDER_ASC
                )
            ),
        ),
        'token' => null,
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('col1', 'col2')
    )
);
$response = $otsClient->search($request);

Utiliser un jeton

Important
$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 10,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::FUNCTION_SCORE_QUERY,
            'query' => array(
                'query' => array(
                    'query_type' => QueryTypeConst::TERM_QUERY,
                    'query' => array(
                        'field_name' => 'keyword',
                        'term' => 'keyword'
                    )
                ),
                'field_value_factor' => array(
                    'field_name' => 'long'
                )
            )
        ),
        'sort' => array(
            array(
                'score_sort' => array(
                    'order' => SortOrderConst::SORT_ORDER_DESC
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('keyword', 'long')
    )
);

$response = $otsClient->search($request);
print "total_hits: " . $response['total_hits'] . "\n";
print json_encode($response['rows'], JSON_PRETTY_PRINT);

while($response['next_token'] != null) {
    $request['search_query']['token'] = $response['next_token'];
    $request['search_query']['sort'] = null;// If next_token is included in the response, you cannot specify the sorting method because the token includes the sorting information. 
    $response = $otsClient->search($request);
    print json_encode($response['rows'], JSON_PRETTY_PRINT);
}

FAQ

Références

  • Lorsque vous utilisez un index de recherche pour interroger des données, recourez aux méthodes de requête suivantes : requête term, requête terms, requête match all, requête match, requête match phrase, requête prefix, requête range, requête wildcard, requête Boolean, requête geo, requête nested et requête exists. Utilisez différentes méthodes de requête pour interroger des données selon plusieurs dimensions en fonction de vos besoins métier.

    Pour trier ou paginer les lignes répondant 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). 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 rubrique Regroupement (distinct).

  • Pour 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, 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 répondant aux conditions de requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la rubrique Balayage parallèle.