Ao consultar dados com um índice de busca, use um método de ordenação predefinido ou especifique um método personalizado. Assim, as linhas que atendem às condições da consulta retornam na ordem definida. Se a resposta contiver muitas linhas, localize os dados necessários configurando os parâmetros limit e offset ou usando tokens.
Cenários
|
Categoria |
Método |
Recurso |
Cenário |
|
Ordenação |
Especifique um método de ordenação ao criar um índice de busca |
Por padrão, os dados em um índice de busca seguem as configurações de pré-ordenação do parâmetro IndexSort. Essas configurações determinam a ordem padrão de retorno das linhas correspondentes aos critérios da consulta. |
|
|
Especifique um método de ordenação durante a consulta de dados |
Use o ScoreSort para ordenar os resultados da consulta pela pontuação de relevância de palavras-chave baseada no BM25. Este método é ideal para cenários como busca de texto completo. |
||
|
O PrimaryKeySort ordena os resultados da consulta pelo valor da chave primária. Use este método para classificar dados pelos identificadores únicos. |
|||
|
O FieldSort classifica os resultados da consulta pelos valores de uma ou mais colunas. Indicado para organizar dados por propriedades como volume de vendas ou visualizações de página. Frequentemente aplicado em setores como e-commerce, redes sociais e ativos de mídia. |
|||
|
Use o GeoDistanceSort para ordenar os resultados da consulta por localização geográfica. Adequado para classificar dados pela distância em relação a um ponto específico. Comum em aplicações de mapas e logística, como listar restaurantes próximos com base na distância do local. |
|||
|
Paginação |
Especifique um método de paginação durante a consulta de dados |
Se o número de linhas na resposta for inferior a 100.000, use este método para navegar diretamente até uma página específica. |
|
|
Por padrão, a paginação com token avança apenas para frente. No entanto, como o token permanece válido durante a consulta, armazene em cache e reutilize o token anterior para voltar à página anterior. |
Pré-ordenação de índice
Por padrão, o Tablestore organiza os dados em um índice de busca segundo uma ordem predefinida, chamada de pré-ordenação de índice (IndexSort). Durante a consulta de dados, o IndexSort define a ordem padrão dos resultados retornados.
Ao criar um índice de busca, personalize o IndexSort. Caso não especifique essa configuração, o índice adotará a ordenação por chave primária como padrão.
A pré-ordenação de índice suporta apenas
PrimaryKeySort(ordenação por chave primária) eFieldSort(ordenação por campo).Não use a pré-ordenação de índice em índices de busca que contenham campos do tipo aninhado (nested).
Após criar o índice de busca, use o recurso de modificação dinâmica de esquema para alterar as configurações de
IndexSort.
Especifique um método de ordenação durante a consulta de dados
Ative a ordenação apenas para campos nos quais o parâmetro EnableSortAndAgg esteja definido como true.
ScoreSort
ScoreSort
Organiza os resultados da consulta pela pontuação de relevância, calculada com o algoritmo BM25. Este método é adequado para cenários baseados em relevância, como buscas de texto completo.
Para ordenar pela pontuação de relevância, especifique explicitamente o
ScoreSort. Caso contrário, o Tablestore classificará os resultados conforme as configurações deIndexSortdo índice.Ao usar o
ScoreSort, campos do tipo FuzzyKeyword não participam da ordenação e o parâmetroweightnão surte efeito sobre eles.
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new ScoreSort() });
PrimaryKeySort
// Sort the query results based on the values of the primary key in ascending order.
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort() });
// Sort the query results based on the values of the primary key in descending order.
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort(SortOrder.DESC) });
FieldSort
Use o FieldSort para classificar os resultados da consulta com base nos valores de uma ou mais colunas específicas.
Classificar os resultados da consulta pelos valores de uma única coluna
Use o FieldSort para organizar os resultados da consulta conforme os valores de uma coluna específica.
var searchQuery = new SearchQuery();
var fieldSort = new FieldSort("col", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { fieldSort });
Classificar os resultados da consulta pelos valores de múltiplas colunas
Também é possível ordenar os resultados da consulta pelos valores de duas colunas em ordens específicas, definindo a sequência de retorno dos dados correspondentes.
var searchQuery = new SearchQuery();
var col1Sort = new FieldSort("col", SortOrder.ASC);
var col2Sort = new FieldSort("co2", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { col1Sort, col2Sort });
GeoDistanceSort
var searchQuery = new SearchQuery();
var geoDistanceSort = new GeoDistanceSort("geoCol", new List<string>(){"0","0"});
searchQuery.Sort = new Sort(new List<ISorter>() { geoDistanceSort });
Especifique um método de paginação
Paginação baseada nos parâmetros Limit e Offset
var searchQuery = new SearchQuery();
searchQuery.Query = new MatchAllQuery();
searchQuery.Limit = 100;
searchQuery.Offset = 100;
Paginação baseada em tokens
Índices de busca com campos do tipo aninhado (nested) não suportam IndexSort. Portanto, especifique um método de ordenação na consulta para ativar a paginação. Sem uma ordem de classificação definida, o servidor não retornará um NextToken, mesmo que existam mais resultados.
/// <summary>
/// In this example, a token is used to page the rows in the response and Tablestore reads all data and returns the data in a list.
/// </summary>
/// <param name="otsClient"></param>
public static SearchResponse ReadMoreRowsWithToken(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
searchQuery.Query = new MatchAllQuery();
var request = new SearchRequest(TableName, IndexName, searchQuery);
var response = otsClient.Search(request);
var rows = response.Rows;
while (response.NextToken != null) // If NextToken is null in the response, all data is read.
{
request.SearchQuery.Token = response.NextToken;
response = otsClient.Search(request);
rows.AddRange(response.Rows);
}
return response;
}
Perguntas frequentes
Referências
-
Ao consultar dados com um índice de busca, use os seguintes métodos: consulta por termo, consulta por termos, consulta match all, consulta match, consulta match phrase, consulta por prefixo, consulta por intervalo, consulta por curinga, consulta booleana, consulta geográfica, consulta aninhada e consulta exists. Combine diferentes métodos para consultar dados sob múltiplas dimensões, conforme as necessidades do seu negócio.
Ordene ou pagine as linhas que atendem às condições da consulta usando os recursos de ordenação e paginação. Para mais informações, consulte Ordenação e paginação.
Use o recurso de colapso (distinct) para agrupar o conjunto de resultados com base em uma coluna específica. Dessa forma, os dados do tipo especificado aparecem apenas uma vez nos resultados da consulta. Para mais informações, consulte Colapso (distinct).
Para analisar dados em uma tabela, use o recurso de agregação da operação Search ou execute instruções SQL. Por exemplo, obtenha valores mínimos e máximos, somas e o número total de linhas. Para mais informações, consulte Agregação e Consulta SQL.
Para obter todas as linhas que atendem às condições da consulta sem precisar ordená-las, chame as operações ParallelScan e ComputeSplits para usar o recurso de varredura paralela. Para mais informações, consulte Varredura paralela.