A match query permite consultar dados em uma tabela com base em correspondências aproximadas. O Tablestore tokeniza os valores das colunas do tipo TEXT e as palavras-chave usadas nas consultas de correspondência conforme o analisador especificado. Assim, o Tablestore executa match queries com base nos tokens gerados. Para garantir alto desempenho em consultas difusas, recomendamos chamar a operação MatchPhraseQuery ao executar match phrase queries em colunas que utilizam tokenização difusa.
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 uma tabela de dados e Gravar dados.
Search index criado para a tabela de dados. Para mais informações, consulte Criar um search index.
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do search index. |
|
offset |
Posição inicial da consulta atual. |
|
limit |
Número máximo de linhas a retornar na consulta atual. Para obter apenas a contagem de linhas que atendem aos critérios de consulta, sem recuperar os dados específicos, defina o parâmetro limit como 0. |
|
get_total_count |
Indica se o sistema deve retornar o número total de linhas correspondentes aos critérios de consulta. Valor padrão: false (a contagem total não é retornada). Definir este parâmetro como true pode comprometer o desempenho da consulta. |
|
query_type |
|
|
field_name |
Nome da coluna a consultar. A coluna pode ser do tipo TEXT. |
|
text |
Palavra-chave usada para corresponder ao valor da coluna durante a match query. Se a coluna consultada for do tipo TEXT, a palavra-chave será dividida em múltiplos tokens conforme o tipo de analisador definido na criação do search index. Caso nenhum analisador tenha sido especificado, a tokenização por palavra única é aplicada por padrão. Por exemplo, se a coluna for do tipo TEXT e o analisador utilizado for o de palavra única, ao buscar pela frase "this is", os resultados podem incluir "..., this is tablestore", "is this tablestore", "tablestore is cool", "this" e "is". |
|
operator |
Operador lógico. Por padrão, utiliza-se OR, indicando que uma linha atende aos critérios quando o valor da coluna contém pelo menos o número mínimo de tokens correspondentes. Ao definir o operador como AND, a linha só será considerada correspondente se o valor da coluna contiver todos os tokens. |
|
minimum_should_match |
Quantidade mínima de tokens correspondentes que devem estar presentes no valor da coluna. Uma linha só é retornada quando o valor da coluna consultada contém, no mínimo, essa quantidade de tokens correspondentes. Nota
O parâmetro minimum_should_match deve ser usado em conjunto com o operador lógico OR. |
|
columns_to_get |
Define se todas as colunas das linhas correspondentes devem ser retornadas. Configure isso através dos parâmetros return_type e return_names.
|
Exemplo
O código de exemplo abaixo demonstra como consultar linhas na tabela de dados onde o valor da coluna text corresponde a "ots text php keyword".
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'search_query' => array(
'offset' => 0,
'limit' => 2,
'get_total_count' => true,
'query' => array(
'query_type' => QueryTypeConst::MATCH_QUERY,
'query' => array(
'field_name' => 'text',
'text' => 'ots text php keyword',
// 'operator' => QueryOperatorConst::PBAND,
'operator' => QueryOperatorConst::PBOR,// Use the minimum_should_match parameter together with the OR logical operator.
'minimum_should_match' => 3
)
),
'sort' => array(
array(
'field_sort' => array(
'field_name' => 'keyword',
'order' => SortOrderConst::SORT_ORDER_ASC
)
),
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('text')
)
);
$response = $otsClient->search($request);
FAQ
Referências
-
Ao utilizar um search index para consultar dados, você tem à disposição os seguintes métodos: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query e exists query. Combine diferentes métodos para atender às necessidades específicas do seu negócio e consultar dados sob múltiplas dimensões.
Para ordenar ou paginar as linhas resultantes da consulta, utilize o recurso de ordenação e paginação. Para mais detalhes, consulte Ordenação e paginação.
Caso precise agrupar o conjunto de resultados com base em uma coluna específica, use o recurso de collapse (distinct). Isso garante que dados do tipo especificado apareçam apenas uma vez nos resultados. Para mais informações, consulte Collapse (distinct).
Para analisar dados em uma tabela, como obter valores extremos, somas ou contagens totais de linhas, execute operações de agregação ou instruções SQL. Consulte Agregação e Consulta SQL para mais detalhes.
Se o objetivo for obter rapidamente todas as linhas correspondentes sem necessidade de ordenação, chame as operações ParallelScan e ComputeSplits para utilizar o recurso de varredura paralela. Para mais informações, consulte Varredura paralela.