Una consulta de términos con el Tablestore SDK for Java compara los valores de un campo o tokens con los términos de búsqueda y devuelve las filas coincidentes o su conteo total cuando hay una coincidencia exacta.
Requisitos previos
Instale Tablestore SDK for Java e inicialice el cliente.
Descripción de la función
Una consulta de términos compara un campo específico con varios términos de búsqueda y devuelve una fila si algún término cumple la condición de coincidencia exacta. En campos que no son de texto, como Keyword y Long, el valor completo del campo debe ser exactamente igual a uno de los términos de búsqueda. Esta combinación OR es similar a la condición IN de SQL. En un campo Text (consulte String types), la fila coincide si algún token generado por el analizador es exactamente igual a uno de los términos de búsqueda. Los términos de búsqueda no se tokenizan.
Los tokens generados para un campo Text pueden cambiar según la configuración del analizador, las actualizaciones del algoritmo y el uso del idioma. Evite usar una consulta de términos para buscar la cadena original completa de un campo Text. En su lugar, utilice una virtual column para asignar el campo de origen al tipo Keyword y realice la consulta sobre la columna virtual.
Para llamar a search, establezca el tipo de consulta en TermsQuery y use SearchQuery para configurar el número de filas devueltas, el seguimiento del conteo total y otros comportamientos comunes de la consulta.
SearchResponse search(SearchRequest request)
A continuación se muestra un ejemplo que busca filas cuyo valor del campo category sea exactamente igual a books o games. La consulta devuelve hasta 10 filas y el número total de filas coincidentes.
String tableName = "example_table";
String indexName = "example_index";
TermsQuery termsQuery = new TermsQuery();
termsQuery.setFieldName("category");
termsQuery.addTerm(ColumnValue.fromString("books"));
termsQuery.addTerm(ColumnValue.fromString("games"));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(termsQuery);
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
Solicitud de búsqueda
request es un objeto SearchRequest que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
String |
El nombre de la tabla. |
|
indexName (obligatorio) |
String |
El nombre del índice de búsqueda. |
|
searchQuery (obligatorio) |
SearchQuery |
La condición de consulta y la configuración general de la consulta. |
|
columnsToGet (opcional) |
SearchRequest.ColumnsToGet |
La configuración de las columnas que se devolverán. Si omite este parámetro, solo se devuelven las columnas de clave principal. |
|
timeoutInMillisecond (opcional) |
int |
El tiempo de espera de la consulta a nivel de solicitud, en milisegundos. El valor predeterminado es |
|
routingValues (opcional) |
|
Los valores de clave principal para los campos de enrutamiento personalizado. Omita este parámetro si el índice no utiliza enrutamiento personalizado. |
Configuración de la consulta
request.searchQuery es un objeto SearchQuery que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
query (obligatorio) |
Query |
La condición de consulta. Establezca este parámetro en |
|
offset (opcional) |
Integer |
La posición inicial de la consulta. |
|
limit (opcional) |
Integer |
El número máximo de filas que se devolverán. Establezca este parámetro en |
|
highlight (opcional) |
Highlight |
La configuración de resumen y resaltado para campos Text. Para más detalles sobre la configuración, consulte Summary and highlighting. |
|
collapse (opcional) |
Collapse |
La configuración de colapso de campos, que elimina duplicados en los resultados según un campo especificado. Para más detalles sobre la configuración, consulte Collapse query results. |
|
sort (opcional) |
Sort |
El orden de clasificación de los resultados. Para más detalles sobre la configuración, consulte Sort and paginate results. |
|
trackTotalCount (opcional) |
int |
El número máximo esperado de filas coincidentes que se contarán. El valor predeterminado es |
|
filter (opcional) |
SearchFilter |
Un filtro que se aplica a los resultados de |
|
aggregationList (opcional) |
|
La configuración de agregaciones. Para más detalles sobre la configuración, consulte Aggregation. |
|
groupByList (opcional) |
|
La configuración de agrupación. Para más detalles sobre la configuración, consulte Aggregation. |
|
token (opcional) |
byte[] |
El token de paginación. Establezca este parámetro con el valor |
Condición de consulta
request.searchQuery.query es un objeto TermsQuery que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
fieldName (obligatorio) |
String |
El nombre del campo indexado que se consultará. |
|
terms (obligatorio) |
|
Los términos de búsqueda. Puede especificar hasta 1,024 valores. Una fila coincide si algún término cumple la condición de coincidencia exacta. En un campo Text, cada valor se utiliza como un término completo y no se tokeniza. |
|
weight (opcional) |
float |
El peso de relevancia de la condición de consulta. El valor debe ser un número de punto flotante positivo. Un valor mayor otorga a la condición de consulta una mayor contribución en la puntuación de relevancia BM25. Este parámetro no afecta la coincidencia ni el número de filas devueltas. Solo influye en el orden de los resultados cuando se usa |
Columnas devueltas
request.columnsToGet es un objeto SearchRequest.ColumnsToGet que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
columns (opcional) |
|
Las columnas de atributos que se devolverán. Establezca este parámetro solo si tanto |
|
returnAll (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributos de la tabla. Valor predeterminado: |
|
returnAllFromIndex (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributos indexadas. Valor predeterminado: |
Valores de retorno
search devuelve un objeto SearchResponse. La siguiente tabla describe los campos principales.
|
Nombre |
Tipo |
Descripción |
|
totalCount |
long |
El número de filas coincidentes. Llame a |
|
rows |
|
Las filas devueltas por esta consulta. Llame a |
|
searchHits |
|
Los resultados de la consulta. Llame a |
|
nextToken |
byte[] |
El token de la página siguiente. Llame a |
|
isAllSuccess |
boolean |
Indica si todas las particiones del índice se consultaron correctamente. Llame a |