Use a consulta de correspondência para buscar dados em uma tabela com base em correspondências aproximadas. O Tablestore tokeniza os valores do campo TEXT e a palavra-chave da consulta conforme o tipo de analisador especificado, permitindo que o sistema execute a busca com base nos tokens gerados. Para campos TEXT com tokenização difusa, use a consulta de frase correspondente (match phrase query) a fim de garantir alto desempenho nas buscas fuzzy.
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 busca criado para a tabela de dados. Para mais informações, consulte Criar um índice de busca.
Parâmetros
|
Parâmetro |
Descrição |
|
tableName |
Nome da tabela de dados. |
|
indexName |
Nome do índice de busca. |
|
offset |
Posição inicial da consulta atual. |
|
limit |
Número máximo de linhas retornadas pela consulta atual. Para obter apenas a contagem de linhas correspondentes sem recuperar os dados, defina o parâmetro limit como 0. |
|
queryType |
Tipo da consulta. Para usar a consulta de correspondência, defina este parâmetro como TableStore.QueryType.MATCH_QUERY. |
|
fieldName |
Nome do campo alvo da correspondência. Esta consulta aplica-se a campos TEXT. |
|
text |
Palavra-chave usada para buscar correspondências no valor do campo durante a consulta. Se o campo alvo for TEXT, a palavra-chave será dividida em múltiplos tokens conforme o analisador definido na criação do índice de busca. Caso nenhum analisador seja especificado, o sistema aplicará a tokenização de palavra única por padrão. Por exemplo, se o campo for TEXT, o analisador for de palavra única e a palavra-chave de busca for "this is", os resultados podem incluir "..., this is tablestore", "is this tablestore", "tablestore is cool", "this" e "is". |
|
operator |
Operador lógico. O padrão é OR, indicando que uma linha atende à consulta quando o valor do campo contém pelo menos o número mínimo de tokens correspondentes. Se você definir o parâmetro operator como AND, a linha só atenderá à consulta se o valor do campo contiver todos os tokens correspondentes. |
|
minimumShouldMatch |
Quantidade mínima de tokens correspondentes exigida no valor do campo. O sistema retorna uma linha somente se o valor do campo especificado em fieldName contiver, no mínimo, a quantidade definida de tokens correspondentes. Nota
Use o parâmetro minimumShouldMatch em conjunto com o operador lógico OR. |
|
getTotalCount |
Define se o total de linhas correspondentes deve ser retornado. Valor padrão: false. Definir este parâmetro como true pode comprometer o desempenho da consulta. |
|
columnToGet |
Determina quais colunas retornar para cada linha correspondente. Configure returnType e returnNames conforme necessário.
|
Exemplos
O código abaixo demonstra como consultar linhas em uma tabela onde o valor da coluna Col_Keyword corresponde a "hangzhou":
/**
* 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));
});
FAQ
Referências
-
Os índices de busca suportam os seguintes tipos de consulta: consulta de termo, consulta de termos, consulta match all, consulta de correspondência, consulta de frase correspondente, consulta de prefixo, consulta de intervalo, consulta curinga, consulta booleana, consulta geográfica, consulta aninhada, consulta vetorial e consulta exists. Escolha o tipo adequado conforme sua necessidade de negócio.
Para ordenar ou paginar as linhas resultantes, utilize o recurso de classificação e paginação. Consulte Classificação e paginação para detalhes.
Caso precise eliminar duplicatas com base em uma coluna específica, use o recurso de colapso (distinct). Isso garante que cada valor distinto apareça apenas uma vez nos resultados. Veja mais em Colapso (distinct).
Para análises estatísticas na tabela de dados, como obtenção de valores extremos, somatórios ou contagem total de linhas, utilize operações de agregação ou comandos SQL. Saiba mais em Agregação e Consulta SQL.
Quando for necessário recuperar rapidamente todas as linhas correspondentes sem ordenação, utilize o recurso de varredura paralela através das operações ParallelScan e ComputeSplits. Para mais informações, consulte Varredura paralela.