Uma consulta booleana consiste em uma ou mais subconsultas. O Tablestore retorna as linhas que atendem às condições especificadas. A subconsulta pode ser de qualquer tipo, inclusive booleana.
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 |
|
MustQueries |
Lista de condições de subconsulta. Retorna apenas as linhas que atendem a todas as condições. Equivale ao operador AND. |
|
MustNotQueries |
Lista de condições de subconsulta. Retorna apenas as linhas que não atendem a nenhuma das condições. Equivale ao operador NOT. |
|
FilterQueries |
Lista de condições de subconsulta. Retorna apenas as linhas que atendem a todos os subfiltros. O filtro funciona como uma consulta, mas não calcula pontuação de relevância com base na quantidade de subfiltros correspondentes. |
|
ShouldQueries |
Lista de condições de subconsulta. Não exige o atendimento de todas as condições para retornar resultados. Equivale ao operador OR. Retorna apenas as linhas que atendem ao número mínimo de condições especificado neste parâmetro. Uma pontuação geral de relevância maior indica que a linha atende a mais condições definidas em ShouldQueries. |
|
MinimumShouldMatch |
Número mínimo de condições de ShouldQueries que as linhas retornadas devem atender. Se houver apenas condições em ShouldQueries, o valor padrão é 1. Se existirem outras condições (como MustQueries, MustNotQueries ou FilterQueries), o valor padrão é 0. |
|
TableName |
Nome da tabela de dados. |
|
IndexName |
Nome do índice de pesquisa. |
|
ColumnsToGet |
Define se o sistema deve retornar todas as colunas das linhas correspondentes. Configure os parâmetros ReturnAll, Columns e ReturnAllFromIndex conforme necessário. Por padrão,
Defina |
Exemplo
O código a seguir executa uma consulta booleana composta por subconsultas booleanas. O exemplo busca linhas em que a coluna Keyword_type_col tenha o valor "SearchIndex" ou "TableStore" e 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 consultar dados com um índice de pesquisa, utilize os seguintes métodos: consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta com caractere curinga, consulta booleana, consulta geográfica, consulta aninhada e consulta exists. Combine diferentes métodos para buscar dados em múltiplas dimensões conforme suas necessidades de negócio.
Ordene ou pagine as linhas correspondentes usando os recursos de ordenação e paginação. Para mais informações, consulte Ordenação e paginação.
Use o recurso de colapso (distinto) para agrupar o conjunto de resultados com base em uma coluna específica. Assim, os dados do tipo especificado aparecem apenas uma vez nos resultados. Para mais informações, consulte Colapso (distinto).
Para analisar dados de uma tabela, utilize o recurso de agregação da operação Search ou execute instruções SQL. É possível obter valores mínimos e máximos, somas e contagem total de linhas, por exemplo. Para mais informações, consulte Agregação e Consulta SQL.
Para obter todas as linhas correspondentes sem ordenação, chame as operações ParallelScan e ComputeSplits para usar o recurso de varredura paralela. Para mais informações, consulte Varredura paralela.