A consulta de correspondência de frase assemelha-se à consulta de correspondência, mas avalia as posições dos tokens. Uma linha atende à condição de consulta apenas quando a ordem e as posições dos tokens na linha coincidem com a ordem e as posições dos tokens contidos na palavra-chave. Se o método de tokenização da coluna consultada for tokenização difusa, a consulta de correspondência de frase apresenta latência menor que a consulta curinga.
Pré-requisitos
Instância OTSClient inicializada. Para mais informações, consulte Inicializar um cliente Tablestore.
Tabela de dados criada e preenchida. Para mais informações, consulte Criar uma tabela de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Para mais informações, consulte Criar um índice de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
field_name |
Nome da coluna a ser consultada. Consultas de correspondência são aplicáveis a colunas TEXT. |
|
text |
Palavra-chave usada para corresponder ao valor da coluna durante a consulta de correspondência de frase. Se a coluna consultada for do tipo TEXT, a palavra-chave será tokenizada conforme o tipo de analisador especificado na criação do índice de pesquisa. Caso nenhum tipo de analisador seja definido, o sistema aplica tokenização de palavra única por padrão. Por exemplo, ao executar uma consulta de correspondência de frase com a expressão "this is", os resultados incluem "..., this is tablestore" e "this is a table". Expressões como "this table is ..." ou "is this a table" não são retornadas. |
|
query |
Tipo de consulta. Defina este parâmetro como MatchPhraseQuery. |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do índice de pesquisa. |
|
limit |
Número máximo de linhas a serem retornadas pela consulta atual. Para obter apenas a quantidade de linhas correspondentes às condições de consulta, sem recuperar os dados específicos, defina o parâmetro limit como 0. |
|
get_total_count |
Indica se o total de linhas correspondentes às condições de consulta deve ser retornado. O valor padrão é false, o que exclui a contagem total da resposta. Definir este parâmetro como true pode comprometer o desempenho da consulta. |
|
columns_to_get |
Determina se todas as colunas de cada linha correspondente devem ser retornadas.
|
Exemplos
Os exemplos a seguir demonstram como usar a consulta de correspondência de frase para buscar linhas cujos valores na coluna Col_Text contenham a expressão 'this is' na mesma sequência.
-
Executar consulta de correspondência de frase com o Tablestore SDK for Python V5.2.1 ou posterior
Ao utilizar o Tablestore SDK for Python V5.2.1 ou superior, a operação retorna um objeto SearchResponse por padrão. O código abaixo ilustra essa requisição:
query = MatchPhraseQuery('Col_Text', 'this is') search_response = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ) print('request_id : %s' % search_response.request_id) print('is_all_succeed : %s' % search_response.is_all_succeed) print('total_count : %s' % search_response.total_count) print('rows : %s' % search_response.rows) # # If deep paging is required, we recommend that you configure the next_token parameter because this method has no limits on the paging depth. # all_rows = [] # next_token = None # # first round # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # # # loop # while search_response.next_token: # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=search_response.next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # print('Total rows:%s' % len(all_rows))Para obter resultados no formato Tuple, utilize a seguinte requisição:
query = MatchPhraseQuery('Col_Text', 'this is') rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response() -
Executar consulta de correspondência de frase com versões anteriores à 5.2.1 do Tablestore SDK for Python
Em versões do Tablestore SDK for Python anteriores à V5.2.1, a consulta de correspondência de frase retorna resultados do tipo TUPLE por padrão. Veja o exemplo de requisição abaixo:
query = MatchPhraseQuery('Col_Text', 'this is') rows, next_token, total_count, is_all_succeed = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) )
FAQ
Referências
-
Ao consultar dados com um índice de pesquisa, você tem à disposição diversos métodos: consulta de termo, consulta de termos, consulta match all, consulta de correspondência, consulta de correspondência de frase, consulta de prefixo, consulta de intervalo, consulta curinga, consulta geográfica, consulta booleana, consulta vetorial KNN, consulta aninhada e consulta exists. Esses métodos permitem buscar dados sob múltiplas dimensões, conforme as necessidades do seu negócio.
Utilize os recursos de ordenação e paginação para organizar as linhas que atendem aos critérios de busca. Para mais detalhes, consulte Ordenação e paginação.
O recurso de colapso (distinct) agrupa o conjunto de resultados com base em uma coluna específica, garantindo que dados desse tipo apareçam apenas uma vez na resposta. Saiba mais em Colapso (distinct).
Para analisar dados de uma tabela, use 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 contagens totais de linhas, por exemplo. Consulte Agregação e Consulta SQL para mais informações.
Caso precise recuperar todas as linhas correspondentes sem ordená-las, chame as operações ParallelScan e ComputeSplits para aproveitar a varredura paralela. Veja mais em Varredura paralela.