Uma consulta booleana consiste em uma ou mais subconsultas. O Tablestore retorna as linhas que atendem às condições especificadas nas subconsultas. Uma subconsulta pode ser de qualquer tipo, inclusive booleana.
Pré-requisitos
Inicialize uma instância do OTSClient. Para mais informações, consulte Inicializar uma instância do OTSClient.
Crie uma tabela de dados e insira dados na tabela. Para mais informações, consulte Criar tabelas de dados e Gravar dados.
Crie um índice de pesquisa para a tabela de dados. Para mais informações, consulte Criar índices de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
MustQueries |
Lista de condições de subconsulta. O serviço retorna apenas as linhas que atendem a todas as condições de subconsulta. Esse parâmetro equivale ao operador AND. |
|
MustNotQueries |
Lista de condições de subconsulta. O serviço retorna apenas as linhas que não atendem a nenhuma das condições. Esse parâmetro equivale ao operador NOT. |
|
FilterQueries |
Lista de condições de subconsulta. O serviço retorna apenas as linhas que atendem a todos os subfiltros. Um filtro funciona de modo semelhante a uma consulta, mas não calcula a pontuação de relevância com base na quantidade de subfiltros atendidos pela linha. |
|
ShouldQueries |
Lista de condições de subconsulta. Não é necessário atender a todas as condições para retornar os resultados da consulta. Esse parâmetro equivale ao operador OR. O serviço retorna apenas as linhas que atendem à quantidade mínima de condições definida pelo parâmetro ShouldQueries. Uma pontuação geral de relevância mais alta indica que mais condições do parâmetro ShouldQueries foram atendidas. |
|
MinimumShouldMatch |
Quantidade mínima de condições do parâmetro ShouldQueries que as linhas retornadas precisam atender. Caso nenhuma outra condição além das especificadas por ShouldQueries seja informada, o valor padrão é 1. Se outras condições forem definidas, como as dos parâmetros MustQueries, MustNotQueries ou FilterQueries, o valor padrão será 0. |
|
TableName |
Nome da tabela de dados. |
|
IndexName |
Nome do índice de pesquisa. |
|
ColumnsToGet |
Indica se o serviço retorna as colunas das linhas que atendem às condições de consulta. Especifique os parâmetros ReturnAll, Columns e ReturnAllFromIndex. Por padrão,
Defina |
Exemplo
O código de exemplo a seguir mostra como executar uma consulta booleana composta por subconsultas booleanas. Neste exemplo, a consulta busca linhas em que o valor da coluna Keyword_type_col é "SearchIndex" ou "TableStore". O serviço retorna todas as colunas do índice de pesquisa.
/// <summary>
/// A Boolean query contains one or more subqueries. Each subquery has its own type.
/// MustQueries: The rows must meet all subquery conditions.
/// ShouldQueries: More than one condition is specified by the ShouldQueries parameter. If a row meets at least one condition, the row meets the query conditions.
/// MustNotQueries: The rows must not meet the conditions.
/// MinimumShouldMatch: The rows must meet the minimum number of conditions.
/// </summary>
/// <param name="otsClient"></param>
public static void BoolQuery(OTSClient otsClient)
{
Console.WriteLine("\n Start bool query...");
var searchQuery = new SearchQuery();
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var boolQuery = new BoolQuery();
var shouldQuerys = new List<IQuery>();
shouldQuerys.Add(new TermQuery(Keyword_type_col, new ColumnValue("SearchIndex")));
shouldQuerys.Add(new TermQuery(Keyword_type_col, new ColumnValue("TableStore")));
boolQuery.ShouldQueries = shouldQuerys;
boolQuery.MinimumShouldMatch = 1;
searchQuery.Query = boolQuery;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can specify the ColumnsToGet parameter to return the columns that you specify, all columns in the rows that meet the query conditions, or all columns in the search index. If you do not specify 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.
foreach (var row in response.Rows)
{
PrintRow(row);
}
}
Perguntas frequentes
Referências
-
Ao utilizar um índice de pesquisa para consultar dados, você pode empregar 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. Consulte dados em múltiplas dimensões com métodos distintos, conforme as necessidades do seu negócio.
Use os recursos de ordenação e paginação para classificar ou paginar as linhas que atendem às condições da consulta. Para mais informações, consulte Sorting and paging.
Use o recurso de agrupamento (distinct) para agrupar o conjunto de resultados com base em uma coluna específica. Dessa forma, os dados desse tipo aparecem apenas uma vez nos resultados. Para mais informações, consulte Agrupamento (distinct).
Caso precise analisar os dados de uma tabela, utilize o recurso de agregação da operação Search ou execute instruções SQL. Por meio deles, você pode obter valores mínimos e máximos, somas e a quantidade total de linhas. Para mais informações, consulte Aggregation e SQL query.
Para recuperar todas as linhas que correspondem à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 Parallel scan.