Todos os produtos
Search
Central de documentação

Tablestore:Consulta de frase correspondente

Última atualização: Jul 03, 2026

A consulta de frase correspondente assemelha-se à consulta de correspondência, mas avalia as posições dos tokens. Uma linha atende às condições da consulta apenas se a ordem e as posições dos tokens na linha coincidirem com a ordem e as posições dos tokens contidos na palavra-chave. Se o método de tokenização do campo consultado for a tokenização difusa, a consulta de frase correspondente apresentará latência menor que a consulta com caractere curinga.

Cenários

Use a consulta de frase correspondente para buscar dados que contenham uma frase específica com palavras organizadas em uma ordem determinada. Combine essa consulta com a tokenização para executar buscas de texto completo em cenários como análise de big data, busca de conteúdo e recomendação personalizada. Por exemplo, localize sentenças com uma frase exata em conteúdos textuais ou identifique mensagens dispostas em uma sequência específica em registros de chat.

Recursos

A consulta de frase correspondente usa correspondências aproximadas para consultar dados e avalia as posições dos tokens. Por exemplo, suponha que o valor em uma coluna do tipo TEXT seja "Hangzhou West Lake Scenic Area" e a palavra-chave especificada seja "Hangzhou Scenic Area". O Tablestore retorna a linha ao usar a consulta de correspondência. No entanto, na consulta de frase correspondente, o Tablestore não retorna essa linha. A distância entre "Hangzhou" e "Scenic Area" na palavra-chave é 0, mas a distância na coluna dessa linha é 2, pois as palavras "West" e "Lake" aparecem entre "Hangzhou" e "Scenic Area".

Ao usar a consulta de frase correspondente, especifique o nome do campo a ser consultado e a palavra-chave. Uma linha só atende às condições da consulta se a ordem e as posições dos tokens na linha corresponderem exatamente à ordem e às posições dos tokens contidos na palavra-chave.

Durante a execução da consulta, defina o peso atribuído ao campo consultado para calcular a pontuação de relevância da palavra-chave baseada em BM25, as colunas a serem retornadas, se o sistema deve retornar o número total de linhas que atendem às condições e o método de ordenação das linhas retornadas.

Operação de API

Chame a operação Search ou ParallelScan e defina o tipo de consulta como MatchPhraseQuery para executar uma consulta de frase correspondente.

Parâmetros

Parâmetro

Descrição

fieldName

Nome do campo a ser correspondido.

É possível executar consultas de frase correspondente em campos TEXT.

text

Palavra-chave usada para corresponder ao valor do campo durante a consulta de frase correspondente.

Se o campo a ser correspondido for do tipo TEXT, a palavra-chave será tokenizada em vários tokens com base no tipo de analisador especificado na criação do índice de busca. Caso nenhum tipo de analisador seja definido, o sistema aplicará a tokenização de palavra única. Para mais informações, consulte Tokenização.

Por exemplo, ao executar uma consulta de frase correspondente usando a frase "this is", os resultados "..., this is tablestore" e "this is a table" serão retornados. Já "this table is ..." ou "is this a table" não serão retornados.

query

Tipo da consulta. Defina o parâmetro de consulta como matchPhraseQuery.

offset

Posição inicial da consulta atual.

limit

Número máximo de linhas a serem retornadas pela consulta atual.

Para consultar apenas a quantidade de linhas que atendem às condições, sem recuperar dados específicos, defina o parâmetro limit como 0.

getTotalCount

Define se o sistema deve retornar o número total de linhas que atendem às condições da consulta. O valor padrão é false, indicando que a contagem total não será retornada.

Definir este parâmetro como true pode comprometer o desempenho da consulta.

weight

Peso atribuído ao campo consultado para calcular a pontuação de relevância da palavra-chave baseada em BM25. Este parâmetro é utilizado em cenários de busca de texto completo. Quanto maior o peso especificado para o campo, maior será sua pontuação de relevância BM25. O valor deve ser um número de ponto flutuante positivo.

Este parâmetro não altera o número de linhas retornadas, mas influencia diretamente as pontuações de relevância BM25 dos resultados da consulta.

tableName

Nome da tabela de dados.

indexName

Nome do índice de busca.

columnsToGet

Define se todas as colunas de cada linha que atende às condições da consulta devem ser retornadas. Configure os campos returnAll e columns no parâmetro columnsToGet.

O valor padrão do campo returnAll é false, o que significa que nem todas as colunas são retornadas. Nesse caso, use o campo columns para especificar quais colunas deseja recuperar. Se nenhuma coluna for especificada, apenas as colunas de chave primária serão retornadas.

Se o campo returnAll for definido como true, todas as colunas serão retornadas.

Observações

O Search Index oferece apenas pontuação básica de relevância BM25 e não suporta modelos personalizados de relevância.

Métodos

Execute consultas de frase correspondente usando o console do Tablestore, a CLI do Tablestore ou os SDKs do Tablestore.

Antes de executar a consulta, certifique-se de cumprir os seguintes pré-requisitos:

Usar o console do Tablestore

Use o console do Tablestore para executar uma consulta de frase correspondente.

  1. Acesse a aba Index Management.

    1. Faça login no console do Table Store.

    2. Na barra de navegação superior, selecione um grupo de recursos e uma região.

    3. Na página Overview, clique em no nome da instância ou em Instance Management na coluna Actions.

    4. Na aba Instance Details, dentro da aba Data Table List, clique em no nome da tabela de dados ou em Index Management na coluna Actions.

  2. Na aba Index Management, localize o Search Index desejado e clique em Search na coluna Actions.

  3. Na caixa de diálogo Search, especifique as condições da consulta.

    1. Por padrão, todas as colunas são retornadas. Para retornar colunas específicas, desative Retrieve All Columns e insira os nomes das colunas separados por vírgulas.

      Nota

      Por padrão, o Table Store retorna as colunas de chave primária da tabela de dados.

    2. Selecione um operador lógico: And, Or ou Not.

      Ao selecionar And, a consulta retorna dados que atendem a todas as condições especificadas. Se escolher Or, a consulta retorna dados que atendem a pelo menos uma das condições. Ao optar por Not, a consulta retorna dados que não correspondem às condições definidas.

    3. Selecione um campo indexado do tipo Text e clique em Add.

    4. Defina o tipo de consulta para o campo indexado como Match Phrase Query (MatchPhraseQuery) e insira o valor a ser buscado.

    5. A ordenação vem desativada por padrão. Para classificar os resultados por um campo específico, ative Enable Sorting, adicione o campo de ordenação e configure a ordem de classificação.

    6. A agregação também é desativada por padrão. Para executar agregação estatística em um campo específico, ative Enable Aggregation, adicione o campo para agregação e configure as definições correspondentes.

  4. Clique em OK.

    Os resultados da consulta serão exibidos na aba Index Management.

Usar a CLI do Tablestore

Use a CLI do Tablestore para executar o comando search e consultar dados por meio de índices de busca. Para mais informações, consulte Índice de busca.

  1. Execute o comando search para usar o índice de busca search_index, consultar dados e retornar todas as colunas indexadas de cada linha que atenda às condições da consulta.

    search -n search_index --return_all_indexed
  2. Insira as condições da consulta conforme solicitado:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "MatchPhraseQuery",
            "Query": {
                "FieldName": "col_text",
                "Text": "this is"
            }
        }
    }

Usar SDKs do Tablestore

Execute consultas de frase correspondente usando os seguintes SDKs do Tablestore: Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET e Tablestore SDK for PHP. Neste exemplo, utilizamos o Tablestore SDK for Java.

O código abaixo demonstra como consultar linhas nas quais o valor da coluna Col_Text corresponde à frase completa "hangzhou shanghai", respeitando a ordem exata, dentro da tabela de dados:

/**
 * Query the rows in which the value of the Col_Text column matches the whole phrase "hangzhou shanghai" in order in the data table. Tablestore returns the total number of rows that meet the query conditions and the specific data of some of these rows. 
 * @param client
 */
private static void matchPhraseQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery(); // Set the query type to MatchPhraseQuery. 
    matchPhraseQuery.setFieldName("Col_Text"); // Specify the name of the column to query. 
    matchPhraseQuery.setText("hangzhou shanghai"); // Specify the keyword that you want to match. 
    searchQuery.setQuery(matchPhraseQuery);
    searchQuery.setOffset(0); // Set the offset parameter to 0. 
    searchQuery.setLimit(20); // Set limit to 20 to return up to 20 rows. 
    //searchQuery.setGetTotalCount(true); // Specify that the total number of matched rows is returned. 

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery); 
    // You can configure the columnsToGet parameter to specify the columns to return or specify that all columns are returned. If you do not configure this parameter, only the primary key columns are returned. 
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Specify that all columns are returned. 
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Specify the columns that you want to return. 
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Specify that the total number of matched rows instead of the number of returned rows is displayed. 
    System.out.println("Row: " + resp.getRows());
}

Faturamento

A consulta de dados via Search Index consome throughput de leitura. Para mais informações, consulte Medição e faturamento do Search Index.

Perguntas frequentes

Referências