Todos os produtos
Search
Central de documentação

Tablestore:Prefix query

Última atualização: Jul 03, 2026

Uma consulta por prefixo (PrefixQuery) localiza linhas em um índice de pesquisa cujo valor de campo começa com uma string especificada.

Visão geral

A PrefixQuery corresponde a valores de coluna que começam com um prefixo definido. O comportamento da consulta varia conforme o tipo de dados da coluna:

  • Keyword: tipo de dados básico de string. O desempenho da consulta diminui à medida que o volume de dados aumenta. Adequado apenas para pequenos conjuntos de dados.

  • FuzzyKeyword: tipo de dados otimizado para buscas aproximadas, como consultas por prefixo. O desempenho permanece estável independentemente do volume de dados. Recomendado para a maioria dos cenários de consulta por prefixo.

  • Text: os valores da coluna são tokenizados antes da indexação. Uma linha corresponde se pelo menos um dos tokens resultantes começar com o prefixo especificado. Devido à imprevisibilidade da tokenização, os resultados podem ser inesperados. Este tipo de dados existe apenas para compatibilidade; use-o com cautela.

Como escolher um tipo de dados

A tabela a seguir resume a adequação de cada tipo de dados para consultas por prefixo.

Tipo

Desempenho

Recomendação

Keyword

Diminui conforme o volume de dados aumenta

Apenas para pequenos conjuntos de dados

FuzzyKeyword

Estável independentemente do volume de dados

Recomendado para a maioria dos cenários

Text

Resultados imprevisíveis devido à tokenização

Não recomendado

Exemplos de correspondência de prefixo

Considere uma coluna com os seguintes valores: hangzhou, beijing, shanghai e harbin.

  • O prefixo hang corresponde a hangzhou, mas não a beijing, shanghai ou harbin.

  • O prefixo ha corresponde tanto a hangzhou quanto a harbin.

APIs

Execute uma consulta por prefixo com a API Search ou ParallelScan. O tipo de consulta é PrefixQuery.

Parâmetros

Parâmetro

Descrição

query

Tipo de consulta. Defina como PrefixQuery.

fieldName

Nome da coluna de destino.

prefix

String de prefixo para corresponder aos valores da coluna.

Em colunas Text, os valores são tokenizados antes da correspondência. A linha será retornada se pelo menos um token começar com o prefixo especificado.

getTotalCount

Define se o número total de linhas correspondentes deve ser retornado. O valor padrão é false.

Definir este parâmetro como true aumenta a latência da consulta.

weight

Peso da consulta. Deve ser um número de ponto flutuante positivo. Em cenários de pesquisa de texto completo, ajusta a contribuição da coluna para a pontuação de relevância BM25. Valores maiores aumentam a influência da coluna na classificação.

Este parâmetro não afeta o conjunto de resultados retornado, apenas a pontuação BM25 de cada linha.

tableName

Nome da tabela de dados.

indexName

Nome do índice de pesquisa.

columnsToGet

Colunas a retornar para cada linha correspondente. Configure com os parâmetros returnAll e columns.

Por padrão, returnAll é false. Se columns não estiver definido, apenas as colunas de chave primária serão retornadas. Se columns estiver definido, apenas as colunas especificadas serão retornadas.

Defina returnAll como true para retornar todas as colunas.

Uso

Faça consultas por prefixo pelo console do Tablestore, pela ferramenta de linha de comando ou por um SDK. Antes de começar, cumpra os pré-requisitos a seguir.

Importante

Atualmente, a PrefixQuery em colunas FuzzyKeyword tem suporte apenas no SDK do Tablestore. O console e a ferramenta de linha de comando aceitam apenas colunas Keyword.

Usar o console

  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 nome da instância ou em Instance Management na coluna Actions.

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

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

  3. Na caixa de diálogo Search, configure as condições de 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.

      Com And, a consulta retorna dados que atendem a todas as condições especificadas. Com Or, retorna dados que atendem a pelo menos uma condição. Com Not, retorna dados que não atendem às condições especificadas.

    3. Selecione um campo de índice e clique em Add.

    4. Defina o tipo de consulta como Prefix query (PrefixQuery) e insira o valor do prefixo.

    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.

    6. A agregação vem desativada por padrão. Para fazer uma agregação estatística em um campo específico, ative Enable Aggregation, adicione o campo de agregação e configure as definições.

  4. Clique em OK.

    Os resultados da consulta aparecem na aba Index Management.

Usar a ferramenta de linha de comando

Execute o comando search para consultar dados com um índice de pesquisa. Para mais informações, consulte Índice de pesquisa.

Importante

A ferramenta de linha de comando aceita consultas por prefixo apenas em colunas Keyword, não em colunas FuzzyKeyword.

  1. Execute o comando search para consultar dados com o índice de pesquisa search_index e retornar todas as colunas indexadas.

    search -n search_index --return_all_indexed
  2. Insira as condições de consulta quando solicitado. Exemplo de código:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "PrefixQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Prefix": "hangzhou"
            }
        }
    }

Usar um SDK

Faça uma consulta por prefixo com o SDK Java, SDK Go, SDK Python, SDK Node.js, SDK .NET ou SDK PHP. O exemplo a seguir usa o SDK Java.

Nota

A instrução de consulta é idêntica para os tipos Keyword e FuzzyKeyword. A única diferença está no tipo de dados da coluna consultada.

O exemplo a seguir mostra como consultar dados cujo valor na coluna Col_Keyword começa com o prefixo "hangzhou".

/**
 * Query for data where the value in the Col_Keyword column starts with the prefix "hangzhou".
 * @param client
 */
private static void prefixQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    PrefixQuery prefixQuery = new PrefixQuery(); // Set the query type to PrefixQuery.
    searchQuery.setGetTotalCount(true);
    prefixQuery.setFieldName("Col_Keyword");
    prefixQuery.setPrefix("hangzhou");
    searchQuery.setQuery(prefixQuery);
    //searchQuery.setGetTotalCount(true); // Set this parameter to return the total number of matched rows.

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Set the columnsToGet parameter to specify the columns to return or to return all columns. If this parameter is not set, only primary key columns are returned by default.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set this parameter to return all columns.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this parameter to return specified columns.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
    System.out.println("Row: " + resp.getRows());
}

Faturamento

Consultar dados por meio de um Índice de Pesquisa consome throughput de leitura. Para mais informações, consulte Medição e faturamento do Índice de Pesquisa.

Perguntas frequentes

Documentos relacionados