Una consulta match permite consultar datos en una tabla con base en coincidencias aproximadas. Tablestore tokeniza los valores de las columnas de tipo TEXT y las palabras clave que se usan en las consultas match, de acuerdo con el analizador que usted especifique. De este modo, Tablestore ejecuta las consultas match a partir de los tokens generados. Se recomienda llamar a la operación MatchPhraseQuery para realizar consultas de frase en columnas con tokenización difusa, ya que esto garantiza un alto rendimiento en dichas consultas.
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 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 |
|
FieldName |
El nombre de la columna que desea consultar. La columna puede ser de tipo TEXT. |
|
Text |
La palabra clave que se usa para coincidir con el valor de la columna durante la consulta match. Si la columna que desea consultar es de tipo TEXT, la palabra clave se tokeniza en varios tokens según el tipo de analizador especificado al crear el índice de búsqueda. Si no se especifica el tipo de analizador durante la creación del índice, se aplica por defecto la tokenización de palabra única. Por ejemplo, si la columna consultada es de tipo TEXT y el analizador es de palabra única, al usar la frase "this is" en la consulta match se devuelven resultados como "..., this is tablestore", "is this tablestore", "tablestore is cool", "this" e "is". |
|
Query |
El tipo de consulta. Establezca este parámetro en MatchQuery. |
|
Operator |
El operador lógico. De forma predeterminada se usa OR, lo cual indica que una fila cumple las condiciones de consulta cuando el valor de la columna contiene como mínimo la cantidad mínima de tokens. Si establece el operador en AND, la fila cumple las condiciones de consulta únicamente cuando el valor de la columna contiene todos los tokens. |
|
MinimumShouldMatch |
La cantidad mínima de tokens coincidentes que debe contener el valor de la columna. Una fila se devuelve solo cuando el valor de la columna consultada contiene como mínimo dicha cantidad de tokens coincidentes. Nota
El parámetro MinimumShouldMatch debe usarse junto con el operador lógico OR. |
|
TableName |
El nombre de la tabla de datos. |
|
IndexName |
El nombre del índice de búsqueda. |
|
GetTotalCount |
Indica si se devuelve el número total de filas que cumplen las condiciones de consulta. Valor predeterminado: false, lo que significa que no se devuelve dicho total. Si establece este parámetro en true, el rendimiento de la consulta disminuye. |
|
ColumnsToGet |
Indica si se devuelven todas las columnas de las filas que cumplen las condiciones de consulta. Puede configurar los parámetros ReturnAll, Columns y ReturnAllFromIndex. De forma predeterminada,
Establezca |
Ejemplo
A continuación se muestra un ejemplo de código para consultar las filas donde el valor de la columna Text_type_col coincide con "SearchIndex" en la tabla de datos.
/// <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.
}
Preguntas frecuentes
Referencias
-
Al consultar datos mediante un índice de búsqueda, puede utilizar 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. Estos métodos le permiten consultar datos desde múltiples dimensiones según sus necesidades de negocio.
Las funciones de ordenación y paginación permiten organizar o dividir en páginas las filas que cumplen las condiciones de 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. Así, 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.
Cuando requiera obtener todas las filas que cumplen las condiciones de consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para aprovechar la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.