A consulta match no Tablestore SDK for Java pesquisa campos Text ou Keyword e retorna linhas que atendem às condições de correspondência com pontuações de relevância.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição do recurso
A consulta match pesquisa campos Text ou Keyword. Para obter informações sobre os tipos de campo, consulte String types. Esses dois tipos de campo apresentam comportamentos de correspondência diferentes:
Text: O analisador configurado durante a criação do índice de pesquisa analisa o valor do campo e o texto da consulta. Caso nenhum analisador esteja definido, o sistema usa a tokenização por palavra única por padrão. O operador padrãoORcorresponde a um valor de campo que contenha qualquer token da consulta. Use o operadorANDpara exigir todos os tokens da consulta ou especifique o número mínimo de tokens que devem corresponder.Keyword: O sistema não analisa o valor do campo nem o texto da consulta. Uma linha só corresponde se o valor completo do campo for igual ao texto da consulta.
Na consulta match, os tokens correspondentes não precisam ser adjacentes nem seguir a mesma ordem do texto da consulta. Para corresponder tokens em ordem, utilize uma match phrase query. Se um campo Text usar o analisador fuzzy e você precisar de uma pesquisa fuzzy de alto desempenho, também recomendamos a consulta match phrase.
O exemplo a seguir pesquisa linhas cujo campo description contém o token tablestore ou durable, retornando até 10 linhas, o total de linhas correspondentes e as pontuações de relevância.
String tableName = "example_table";
String indexName = "example_index";
MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
System.out.println(hit.getRow());
System.out.println(hit.getScore());
}
Parâmetros
Solicitação de pesquisa
request é um objeto SearchRequest que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
String |
Nome da tabela. |
|
indexName (obrigatório) |
String |
Nome do índice de pesquisa. |
|
searchQuery (obrigatório) |
SearchQuery |
Condição de consulta e configurações gerais da pesquisa. |
|
columnsToGet (opcional) |
SearchRequest.ColumnsToGet |
Configurações das colunas retornadas. Se você omitir este parâmetro, o sistema retornará apenas as colunas de chave primária. |
|
timeoutInMillisecond (opcional) |
int |
Tempo limite da consulta no nível da solicitação, em milissegundos. O valor padrão é |
|
routingValues (opcional) |
|
Valores de chave primária para campos de roteamento personalizado. Omita este parâmetro se o índice não utilizar roteamento personalizado. |
Configurações da consulta
request.searchQuery é um objeto SearchQuery que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
query (obrigatório) |
Query |
Condição da consulta. Defina este parâmetro como |
|
offset (opcional) |
Integer |
Posição inicial da consulta. |
|
limit (opcional) |
Integer |
Número máximo de linhas a retornar. Defina este parâmetro como |
|
highlight (opcional) |
Highlight |
Configurações de resumo e destaque para campos |
|
collapse (opcional) |
Collapse |
Configurações de colapso de campos, que removem duplicatas dos resultados com base em um campo especificado. Para detalhes de configuração, consulte Collapse query results. |
|
sort (opcional) |
Sort |
Ordem de classificação dos resultados. Para detalhes de configuração, consulte Sort and paginate results. |
|
trackTotalCount (opcional) |
int |
Contagem máxima esperada de linhas correspondentes. O valor padrão é |
|
filter (opcional) |
SearchFilter |
Filtro aplicado aos resultados da |
|
aggregationList (opcional) |
|
Configurações de agregação. Para detalhes de configuração, consulte Aggregation. |
|
groupByList (opcional) |
|
Configurações de agrupamento. Para detalhes de configuração, consulte Aggregation. |
|
token (opcional) |
byte[] |
Token de paginação. Defina este parâmetro com o valor |
Condição de correspondência
request.searchQuery.query é um objeto MatchQuery que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
fieldName (obrigatório) |
String |
Nome do campo de índice |
|
text (obrigatório) |
String |
Texto da consulta. Para um campo |
|
operator (opcional) |
QueryOperator |
Operador usado para combinar os tokens da consulta. |
|
minShouldMatch (opcional) |
String ou int |
Número mínimo de tokens da consulta que devem corresponder quando o |
|
weight (opcional) |
float |
Peso da consulta. O valor padrão é |
O método setMinimumShouldMatch(Integer) está obsoleto. Utilize setMinShouldMatch(int) ou setMinShouldMatch(String).
Colunas retornadas
request.columnsToGet é um objeto SearchRequest.ColumnsToGet que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
columns (opcional) |
|
Colunas de atributo a retornar. Defina este parâmetro somente se tanto |
|
returnAll (opcional) |
boolean |
Indica se o sistema deve retornar todas as colunas de atributo da tabela. O valor padrão é |
|
returnAllFromIndex (opcional) |
boolean |
Indica se o sistema deve retornar todas as colunas de atributo indexadas. O valor padrão é |
Valores de retorno
Resposta da consulta
O método search retorna um objeto SearchResponse. A tabela a seguir descreve os principais campos.
|
Nome |
Tipo |
Descrição |
|
totalCount |
long |
Quantidade de linhas correspondentes. Chame |
|
rows |
|
Linhas retornadas na resposta atual. Chame |
|
searchHits |
|
Resultados da consulta. Chame |
|
nextToken |
byte[] |
Token da próxima página. Chame |
|
isAllSuccess |
boolean |
Indica se todas as partições do índice foram consultadas com sucesso. Chame |
Resultado da consulta
response.searchHits[] é um objeto SearchHit que contém os seguintes campos principais.
|
Nome |
Tipo |
Descrição |
|
row |
Row |
Linha correspondente. Chame |
|
score |
Double |
Pontuação de relevância. Chame |
|
highlightResultItem |
HighlightResultItem |
Resultado de resumo e destaque. Chame |
Exemplos
Corresponder a todos os tokens da consulta
Defina operator como AND para corresponder a uma linha apenas se o valor do campo contiver todos os tokens da consulta.
MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");
matchQuery.setOperator(QueryOperator.AND);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
Definir o número mínimo de tokens correspondentes
Ao usar o operador OR, defina minShouldMatch para especificar o número mínimo de tokens da consulta que devem corresponder. O exemplo abaixo exige pelo menos dois tokens correspondentes.
MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable cloud");
matchQuery.setOperator(QueryOperator.OR);
matchQuery.setMinShouldMatch(2);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);