Uma consulta de sufixo com o Tablestore SDK for Java identifica valores completos do campo FuzzyKeyword que terminam com uma string especificada e retorna as linhas correspondentes ou a contagem total.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente.
Consultas de sufixo exigem o Tablestore SDK for Java 5.17.0 ou posterior.
Descrição do recurso
A consulta de sufixo localiza valores completos de campos que terminam com uma string específica. Esse tipo de consulta aceita apenas campos FuzzyKeyword. Para mais informações sobre esse tipo de campo, consulte String types. A correspondência diferencia maiúsculas de minúsculas. Por exemplo, o valor de campo order-H001 corresponde ao sufixo H001, mas não a h001.
Campos FuzzyKeyword não suportam ordenação nem agregação. Caso a mesma consulta exija essas operações, utilize outro campo compatível com a funcionalidade desejada.
Campos Keyword não aceitam SuffixQuery. Para implementar uma correspondência de sufixo equivalente, inverta o valor do campo antes de gravá-lo em um campo Keyword destinado a consultas. No momento da consulta, inverta a string de sufixo a ser buscada e execute uma prefix query (PrefixQuery) no campo.
Defina o tipo de consulta como SuffixQuery ao chamar search. Utilize 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 abaixo busca valores FuzzyKeyword no campo phone que terminam com 1234. A consulta retorna até 10 linhas e o número total de correspondências.
String tableName = "example_table";
String indexName = "example_index";
SuffixQuery suffixQuery = new SuffixQuery();
suffixQuery.setFieldName("phone");
suffixQuery.setSuffix("1234");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(suffixQuery);
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 for configurado, apenas as colunas de chave primária serão retornadas. |
|
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 atual. |
|
limit (opcional) |
Integer |
Número máximo de linhas a retornar. Defina este parâmetro como |
|
collapse (opcional) |
Collapse |
Configuração de colapso usada para deduplicar resultados com base em um campo específico. Para mais informações, consulte Collapse (distinct). |
|
sort (opcional) |
Sort |
Ordem de classificação dos resultados. Campos |
|
trackTotalCount (opcional) |
int |
Quantidade máxima de linhas correspondentes a contar. O valor padrão é |
|
filter (opcional) |
SearchFilter |
Filtro pós-consulta aplicado aos resultados de |
|
aggregationList (opcional) |
|
Configurações de agregação. Campos |
|
groupByList (opcional) |
|
Configurações de agrupamento. Campos |
|
token (opcional) |
byte[] |
Token de paginação. Defina o |
Condição da consulta
request.searchQuery.query é um objeto SuffixQuery que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
fieldName (obrigatório) |
String |
Nome do campo |
|
suffix (obrigatório) |
String |
String de consulta. O valor completo do campo deve terminar com esta string. A correspondência diferencia maiúsculas de minúsculas. |
|
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 influência da condição na pontuação de relevância BM25. Este parâmetro não altera quais linhas correspondem nem quantas são retornadas, afetando 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 tanto |
|
returnAll (opcional) |
boolean |
Indica se todas as colunas de atributo da tabela de dados devem ser retornadas. O valor padrão é |
|
returnAllFromIndex (opcional) |
boolean |
Determina se todas as colunas de atributo indexadas devem ser retornadas. O valor padrão é |
Valores de retorno
search retorna um objeto SearchResponse. A tabela a seguir descreve os principais campos.
|
Nome |
Tipo |
Descrição |
|
totalCount |
long |
Número de linhas correspondentes, obtido chamando |
|
rows |
|
Linhas retornadas pela consulta atual, obtidas chamando |
|
nextToken |
byte[] |
Token para a próxima página, obtido chamando |
|
isAllSuccess |
boolean |
Indica se todas as partições do índice foram consultadas com êxito, obtido chamando |