Todos os produtos
Search
Central de documentação

Tablestore:Consulta de correspondência

Última atualização: Jul 03, 2026

Use a consulta de correspondência (MatchQuery) para buscar dados em uma tabela com base em correspondências aproximadas. O Tablestore tokeniza os valores das colunas TEXT e as palavras-chave da consulta conforme o tipo de analisador especificado, permitindo que o sistema execute a busca com base nos tokens gerados. Para colunas com tokenização difusa, use a consulta de frase correspondente (match phrase query) para garantir melhor desempenho.

Pré-requisitos

Parâmetros

Parâmetro

Descrição

TableName

Nome da tabela de dados.

IndexName

Nome do índice de busca.

Query

Tipo da consulta. Defina como MatchQuery.

FieldName

Nome do campo para correspondência.

É possível executar consultas de correspondência em colunas do tipo TEXT.

Text

Palavra-chave usada para corresponder aos valores da coluna na consulta.

Se a coluna for do tipo TEXT, o sistema divide a palavra-chave em vários tokens conforme o analisador definido na criação do índice de busca. Sem essa definição, aplica-se a tokenização por palavra única por padrão.

Por exemplo, se a coluna alvo 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: a linha atende à condição se o valor da coluna contiver a quantidade especificada de tokens correspondentes.

Com Operator definido como AND, a linha só retorna se o valor da coluna contiver todos os tokens buscados.

MinimumShouldMatch

Quantidade mínima de tokens correspondentes exigida no valor da coluna.

A linha aparece nos resultados apenas se o valor da coluna indicada em FieldName contiver pelo menos esse número mínimo de tokens.

Nota

Use o parâmetro MinimumShouldMatch em conjunto com o operador lógico OR.

Offset

Posição inicial da consulta atual.

Limit

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

Para obter apenas a contagem de linhas correspondentes sem recuperar os dados, defina Limit como 0.

GetTotalCount

Define se o total de linhas correspondentes deve ser retornado. Valor padrão: false.

Habilitar essa opção (true) pode reduzir o desempenho da consulta.

ColumnsToGet

Controla quais colunas das linhas correspondentes retornam. Configure pelos parâmetros ReturnAll e Columns.

Por padrão, ReturnAll é false e nem todas as colunas retornam. Nesse caso, use Columns para listar as colunas desejadas; caso contrário, apenas as colunas de chave primária retornam.

Se ReturnAll for true, todas as colunas aparecem no resultado.

Código de exemplo

O exemplo abaixo demonstra como consultar linhas cujo valor em Col_Keyword corresponda a 'hangzhou':

/**
 * Query the rows whose value of Col_Keyword matches "hangzhou" in a table. Tablestore returns the total number of rows that meet the query conditions and part of the matched rows. 
 */
func MatchQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.MatchQuery{} // Set the query type to MatchQuery. 
    query.FieldName = "Col_Keyword" // Specify the name of the column that you want to query. 
    query.Text = "hangzhou" // Specify the keyword that is used to match the value of the column. 
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    searchQuery.SetGetTotalCount(true) 
    searchQuery.SetOffset(0) // Set the Offset parameter to 0. 
    searchQuery.SetLimit(20) // Set the Limit parameter to 20, which indicates a maximum of 20 rows can be returned. 
    searchRequest.SetSearchQuery(searchQuery)
    searchResponse, err := client.Search(searchRequest)
    if err != nil { // An error occurs. 
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned. 
    fmt.Println("TotalCount: ", searchResponse.TotalCount) // Display the total number of rows that meet the query conditions. 
    fmt.Println("RowCount: ", len(searchResponse.Rows)) // Display the total number of rows that are returned. 
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody)) // By default, if you do not specify the columnsToGet parameter, only the primary key columns are returned. 
    }
    // Return all columns in the rows that meet the query conditions.
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAll:true,
    })
    searchResponse, err = client.Search(searchRequest)
    if err != nil {
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned. 
    fmt.Println("TotalCount: ", searchResponse.TotalCount) // Display the total number of rows that meet the query conditions. 
    fmt.Println("RowCount: ", len(searchResponse.Rows))
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
}

Perguntas frequentes

Referências