Una consulta booleana se compone de una o más subconsultas. Tablestore devuelve las filas que cumplen con las condiciones de subconsulta especificadas. Una subconsulta puede ser de cualquier tipo, incluida la consulta booleana.
Requisitos previos
Se inicializó una instancia de OTSClient. Para obtener más información, consulte Initialize an OTSClient instance.
Se creó una tabla de datos y se escribieron los datos en ella. Para obtener más información, consulte Create data tables y Write data.
Se creó un índice de búsqueda para la tabla de datos. Para obtener más información, consulte Create search indexes.
Parámetros
|
Parámetro |
Descripción |
|
MustQueries |
Lista de condiciones de subconsulta. Solo se devuelven las filas que cumplen con todas las condiciones de subconsulta. Este parámetro equivale al operador AND. |
|
MustNotQueries |
Lista de condiciones de subconsulta. Solo se devuelven las filas que no cumplen con ninguna condición de subconsulta. Este parámetro equivale al operador NOT. |
|
FilterQueries |
Lista de condiciones de subconsulta. Solo se devuelven las filas que cumplen con todos los subfiltros. Un filtro es similar a una consulta, pero no calcula una puntuación de relevancia según la cantidad de subfiltros que cumple una fila. |
|
ShouldQueries |
Lista de condiciones de subconsulta. No es necesario cumplir con todas las condiciones para que se devuelvan los resultados de la consulta. Este parámetro equivale al operador OR. Solo se devuelven las filas que cumplen con el número mínimo de condiciones de subconsulta especificado por el parámetro ShouldQueries. Una puntuación de relevancia general más alta indica que se cumplen más condiciones de subconsulta especificadas por el parámetro ShouldQueries. |
|
MinimumShouldMatch |
Número mínimo de condiciones de subconsulta especificadas por el parámetro ShouldQueries que deben cumplir las filas devueltas. Si solo se especifican las condiciones del parámetro ShouldQueries, el valor predeterminado de MinimumShouldMatch es 1. Si se especifican otras condiciones, como las de MustQueries, MustNotQueries o FilterQueries, el valor predeterminado de MinimumShouldMatch es 0. |
|
TableName |
Nombre de la tabla de datos. |
|
IndexName |
Nombre del índice de búsqueda. |
|
ColumnsToGet |
Indica si se devuelven todas las columnas de las filas que cumplen con las condiciones de la consulta. Puede especificar los parámetros ReturnAll, Columns y ReturnAllFromIndex. De forma predeterminada,
Establezca |
Ejemplo
A continuación se muestra un ejemplo de código para ejecutar una consulta booleana compuesta por subconsultas booleanas. En este caso, se consultan las filas donde el valor de la columna Keyword_type_col es "SearchIndex" o "TableStore". Se devuelven todas las columnas del índice de búsqueda.
/// <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);
}
}
Preguntas frecuentes
Referencias
-
Cuando utiliza un índice de búsqueda para consultar datos, puede usar los siguientes métodos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query y exists query. Según sus necesidades de negocio, combine distintos métodos para consultar datos desde múltiples dimensiones.
Las funciones de ordenamiento y paginación permiten organizar las filas que cumplen con las condiciones de la consulta. Para obtener más información, consulte Sorting and paging.
La función collapse (distinct) reduce el conjunto de resultados con base en una columna específica. De esta manera, los datos del tipo indicado aparecen una sola vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).
Si necesita analizar los datos de una tabla, utilice la función de agregación de la operación Search o ejecute instrucciones SQL. Por ejemplo, puede obtener los valores mínimo y máximo, la suma y el número total de filas. Para obtener más información, consulte Aggregation y SQL query.
Para obtener todas las filas que cumplen con las condiciones de la consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits mediante la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.