La consulta de coincidencia permite buscar datos en una tabla mediante coincidencias aproximadas. Tablestore tokeniza los valores del campo TEXT y la palabra clave utilizada en la búsqueda según el tipo de analizador especificado, lo que habilita la ejecución de este tipo de consulta con base en los tokens generados. Para campos TEXT que utilizan tokenización difusa, se recomienda emplear la consulta de frase coincidente a fin de garantizar un alto rendimiento en búsquedas difusas.
Requisitos previos
Se inicializó una instancia de OTSClient. Para más información, consulte Initialize an OTSClient instance.
Se creó una tabla de datos y se escribieron datos en ella. Para más información, consulte Create data tables y Write data.
Se creó un índice de búsqueda para la tabla de datos. Para más información, consulte Create a search index.
Parámetros
|
Parámetro |
Descripción |
|
tableName |
Nombre de la tabla de datos. |
|
indexName |
Nombre del índice de búsqueda. |
|
offset |
Posición desde la cual comienza la consulta actual. |
|
limit |
Número máximo de filas que debe devolver la consulta actual. Para obtener solo la cantidad de filas que cumplen las condiciones de consulta sin recuperar datos específicos, establezca el parámetro limit en 0. |
|
queryType |
Tipo de consulta. Para utilizar una consulta de coincidencia, establezca este parámetro en TableStore.QueryType.MATCH_QUERY. |
|
fieldName |
Nombre del campo que se desea consultar. La consulta de coincidencia aplica a campos de tipo TEXT. |
|
text |
Palabra clave utilizada para comparar con el valor del campo durante la consulta de coincidencia. Si el campo objetivo es de tipo TEXT, la palabra clave se tokeniza en varios tokens según el tipo de analizador definido al crear el índice de búsqueda. Si no se especifica ningún analizador durante la creación del índice, se aplica la tokenización de palabra única. Por ejemplo, si el campo consultado es de tipo TEXT, el analizador configurado es de palabra única y se usa "this is" como palabra clave de búsqueda, se pueden obtener resultados como "..., this is tablestore", "is this tablestore", "tablestore is cool", "this" e "is". |
|
operator |
Operador lógico. De forma predeterminada se utiliza OR, lo que indica que una fila cumple las condiciones de consulta cuando el valor del campo contiene como mínimo la cantidad mínima de tokens coincidentes. Si establece el parámetro operator en AND, la fila cumple las condiciones únicamente cuando el valor del campo contiene todos los tokens coincidentes. |
|
minimumShouldMatch |
Cantidad mínima de tokens coincidentes que debe contener el valor del campo. Una fila se devuelve solo si el valor del campo indicado por el parámetro fieldName contiene al menos la cantidad mínima de tokens coincidentes. Nota
El parámetro minimumShouldMatch debe usarse junto con el operador lógico OR. |
|
getTotalCount |
Indica si se debe devolver el número total de filas que cumplen las condiciones de consulta. Valor predeterminado: false. Establecer este parámetro en true afecta el rendimiento de la consulta. |
|
columnToGet |
Determina si se devuelven todas las columnas de cada fila que cumple las condiciones de consulta. Puede configurar returnType y returnNames para este parámetro.
|
Ejemplos
El siguiente fragmento de código muestra cómo consultar las filas donde el valor de la columna Col_Keyword coincide con "hangzhou" dentro de una tabla:
/**
* Query the rows in which the value of the Col_Keyword column matches "hangzhou" in a table. Tablestore returns the total number of rows that meet the query conditions and the specific data of some of these rows.
*/
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, // To query only the number of rows that meet the query conditions without specific data, set the limit parameter to 0.
query: { // Set the query type to MatchQuery.
queryType: TableStore.QueryType.MATCH_QUERY,
query: {
fieldName: "Col_Keyword", // Specify the name of the field that you want to match.
text: "hangzhou" // Specify the keyword that is used to match the value of the field.
}
},
getTotalCount: true // Specify whether to return the total number of rows that meet the query conditions. Default value: false.
},
columnToGet: { // Specify the columns that you want to return. You can set the parameter to RETURN_SPECIFIED to return the specified columns, RETURN_ALL to return all columns, RETURN_ALL_FROM_INDEX to return all columns in the search index, or RETURN_NONE to return only the primary key columns.
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
Preguntas frecuentes
Referencias
-
Los índices de búsqueda admiten los siguientes tipos 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, vector query y exists query. Seleccione el tipo de consulta adecuado según sus necesidades empresariales.
Para ordenar o paginar las filas que cumplen las condiciones de consulta, utilice la función de ordenamiento y paginación. Para más información, consulte Sorting and paging.
Si necesita agrupar el conjunto de resultados con base en una columna específica, utilice la función de colapso (distinct). Esto garantiza que los datos del tipo especificado aparezcan una sola vez en los resultados de la consulta. Para más información, consulte Collapse (distinct).
Para analizar datos de una tabla, como obtener valores extremos, sumas o el número total de filas, ejecute operaciones de agregación o sentencias SQL. Para más información, consulte Aggregation y SQL query.
Si requiere obtener rápidamente todas las filas que cumplen las condiciones de consulta sin necesidad de ordenarlas, invoque las operaciones ParallelScan y ComputeSplits para aprovechar la función de escaneo paralelo. Para más información, consulte Parallel scan.