A match query permite consultar dados em uma tabela com base em correspondências aproximadas. O Tablestore tokeniza os valores das colunas do tipo TEXT e as palavras-chave usadas na consulta, conforme o analisador especificado. Assim, o Tablestore executa match queries com base nos tokens gerados. Para colunas com tokenização difusa, recomendamos usar a operação MatchPhraseQuery e garantir alta performance em consultas fuzzy.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada e preenchida. Para mais informações, consulte Criar tabelas de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Para mais informações, consulte Criar índices de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
FieldName |
Nome da coluna a ser consultada. A coluna pode ser do tipo TEXT. |
|
Text |
Palavra-chave usada para corresponder ao valor da coluna durante a match query. Se a coluna consultada for do tipo TEXT, a palavra-chave será dividida em vários tokens conforme o tipo de analisador definido na criação do índice de pesquisa. Caso nenhum analisador seja especificado, o sistema aplica tokenização de palavra única por padrão. Por exemplo, se a coluna for do tipo TEXT e o analisador utilizar tokenização de palavra única, uma consulta com a frase "this is" retornará resultados como "..., this is tablestore", "is this tablestore", "tablestore is cool", "this" e "is". |
|
Query |
Tipo da consulta. Defina este parâmetro como MatchQuery. |
|
Operator |
Operador lógico. O padrão é OR, indicando que uma linha atende aos critérios quando o valor da coluna contém pelo menos o número mínimo de tokens correspondentes. Ao definir o operador como AND, a linha só atenderá à consulta se o valor da coluna contiver todos os tokens. |
|
MinimumShouldMatch |
Quantidade mínima de tokens correspondentes exigidos no valor da coluna. O sistema retorna uma linha apenas se o valor da coluna consultada contiver pelo menos o número mínimo de tokens definidos. Nota
Use o parâmetro MinimumShouldMatch em conjunto com o operador lógico OR. |
|
TableName |
Nome da tabela de dados. |
|
IndexName |
Nome do índice de pesquisa. |
|
GetTotalCount |
Define se o total de linhas que atendem aos critérios de consulta deve ser retornado. Valor padrão: false, indicando que a contagem total não é retornada. Definir este parâmetro como true pode comprometer a performance da consulta. |
|
ColumnsToGet |
Especifica se todas as colunas das linhas correspondentes devem ser retornadas. É possível configurar os parâmetros ReturnAll, Columns e ReturnAllFromIndex. Por padrão,
Defina |
Exemplo
O código de exemplo abaixo demonstra como consultar linhas na tabela de dados onde o valor da coluna Text_type_col corresponde a "SearchIndex".
/// <summary>
/// Query the rows in which the value of the Text_type_col column matches "SearchIndex" in a table and return the total number of rows that meet the query conditions.
/// </summary>
/// <param name="otsClient"></param>
public static void MatchQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Set the query type to MatchQuery, the column that you want to match to Text_type_col, and the keyword to "SearchIndex".
searchQuery.Query = new MatchQuery("Text_type_col", "SearchIndex");
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can configure the ColumnsToGet parameter to specify the columns that you want to return, specify that all columns are returned, or specify that all columns in the search index are returned. If you do not configure this parameter, only the primary key columns are returned.
request.ColumnsToGet = new ColumnsToGet()
{
// Return all columns in the search index.
ReturnAllFromIndex = true
// Return the columns that you specify.
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// Return all columns in the rows that meet the query conditions.
//ReturnAll = true
};
var response = otsClient.Search(request);
Console.WriteLine("Total Count:" + response.TotalCount); // Display the total number of rows that meet the query conditions instead of the number of returned rows.
}
FAQ
Referências
-
Ao usar um índice de pesquisa para consultar dados, utilize os seguintes métodos: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query e exists query. Combine diferentes métodos para consultar dados sob múltiplas dimensões, conforme as necessidades do seu negócio.
Utilize os recursos de ordenação e paginação para classificar ou paginar as linhas que atendem aos critérios de consulta. Para mais informações, consulte Ordenação e paginação.
Use o recurso de collapse (distinct) para agrupar o conjunto de resultados com base em uma coluna específica. Dessa forma, dados do tipo especificado aparecem apenas uma vez nos resultados da consulta. Para mais informações, consulte Collapse (distinct).
Para analisar dados em uma tabela, utilize o recurso de agregação da operação Search ou execute instruções SQL. Isso permite obter valores mínimos e máximos, somas e contagens totais de linhas. Para mais informações, consulte Agregação e Consulta SQL.
Caso precise obter todas as linhas correspondentes sem ordenação, chame as operações ParallelScan e ComputeSplits para utilizar o recurso de varredura paralela. Para mais informações, consulte Varredura paralela.