Uma consulta com curinga no Tablestore SDK for Java usa os padrões * e ? para corresponder a dados em campos Keyword, Text ou FuzzyKeyword.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente.
Descrição do recurso
A consulta com curinga compara um campo indexado com um padrão que contém caracteres curinga. A semântica de correspondência assemelha-se ao operador LIKE do SQL, mas o padrão usa * e ? como caracteres curinga. Em campos Keyword ou FuzzyKeyword, o sistema compara o padrão com o valor completo do campo. Em campos Text, a comparação ocorre com cada token gerado a partir do valor do campo, sem tokenizar o próprio padrão. Para mais informações sobre os tipos de campo compatíveis, consulte String types. A correspondência diferencia maiúsculas de minúsculas.
O padrão pode começar com um caractere curinga e aceita os seguintes caracteres:
*: corresponde a zero ou mais caracteres.?: corresponde a qualquer caractere único.
Por exemplo, table*e corresponde a tablestore. O padrão hang*u corresponde tanto a hangu quanto a hangzhou. Já o padrão hang?u corresponde a hangxu, mas não a hangu.
Para corresponder a valores que contenham uma string específica, como no padrão *word* (equivalente ao SQL WHERE field_a LIKE '%word%'), use uma token-based wildcard query. Com essa abordagem, o desempenho da consulta não se degrada conforme o volume de dados aumenta.
Para excluir dados correspondentes a um padrão, adicione o objeto WildcardQuery a BoolQuery.mustNotQueries. Essa configuração equivale ao operador SQL NOT LIKE. Para obter informações sobre como configurar BoolQuery, consulte Boolean query.
Defina o tipo de consulta como WildcardQuery ao chamar search. Use SearchQuery para configurar o limite de resultados, o rastreamento da contagem total e outras configurações gerais da consulta.
SearchResponse search(SearchRequest request)
O exemplo a seguir consulta valores Keyword no campo product_name que correspondem ao padrão table*e. A consulta retorna até 10 linhas e o número total de correspondências.
String tableName = "example_table";
String indexName = "example_index";
WildcardQuery wildcardQuery = new WildcardQuery();
wildcardQuery.setFieldName("product_name");
wildcardQuery.setValue("table*e");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(wildcardQuery);
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);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());
Parâmetros
Solicitação de busca
request é um objeto SearchRequest que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
String |
Nome da tabela de dados. |
|
indexName (obrigatório) |
String |
Nome do índice de busca. |
|
searchQuery (obrigatório) |
SearchQuery |
Condição de consulta e configurações gerais da busca. |
|
columnsToGet (opcional) |
SearchRequest.ColumnsToGet |
Colunas a retornar. Se este parâmetro não estiver configurado, 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 correspondentes aos campos de roteamento personalizado. Deixe este parâmetro indefinido se o roteamento personalizado não estiver configurado. |
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 um objeto |
|
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 da consulta
request.searchQuery.query é um objeto WildcardQuery que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
fieldName (obrigatório) |
String |
Nome do campo |
|
value (obrigatório) |
String |
Padrão de consulta contendo caracteres curinga. O comprimento máximo é de 32 caracteres e a correspondência diferencia maiúsculas de minúsculas. Em campos |
|
weight (opcional) |
float |
Peso de relevância da condição de consulta. O valor deve ser um número de ponto flutuante positivo. Quanto maior o valor, maior a contribuição da condição para a pontuação de relevância BM25. Este parâmetro não afeta a correspondência nem o número de linhas retornadas. Ele influencia a ordem dos resultados apenas quando |
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. Configure este parâmetro somente se |
|
returnAll (opcional) |
boolean |
Especifica se o sistema deve retornar todas as colunas de atributo da tabela de dados. O valor padrão é |
|
returnAllFromIndex (opcional) |
boolean |
Especifica se o sistema deve retornar todas as colunas de atributo indexadas. O valor padrão é |
Valores de retorno
search retorna um objeto SearchResponse. A tabela a seguir descreve os campos principais.
|
Nome |
Tipo |
Descrição |
|
totalCount |
long |
Quantidade de linhas correspondentes. Chame |
|
rows |
|
Linhas retornadas por esta consulta. 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 |