Una consulta con comodines mediante el Tablestore SDK for Java utiliza los patrones * y ? para hacer coincidir datos en campos de tipo Keyword, Text o FuzzyKeyword.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente.
Descripción de la función
Una consulta con comodines compara un campo indexado con un patrón que contiene caracteres comodín. Su semántica de coincidencia es similar a la de LIKE en SQL, pero el patrón utiliza * y ? como caracteres comodín. En un campo Keyword o FuzzyKeyword, el patrón se compara con el valor completo del campo. En un campo Text, el patrón se compara con cada token generado a partir del valor del campo, y el patrón en sí no se tokeniza. Para obtener más información sobre los tipos de campo compatibles, consulte String types. La comparación distingue entre mayúsculas y minúsculas.
Un patrón puede comenzar con un carácter comodín y admite los siguientes caracteres comodín:
*coincide con cero o más caracteres.?coincide con cualquier carácter individual.
Por ejemplo, table*e coincide con tablestore. El patrón hang*u coincide con hangu y hangzhou. El patrón hang?u coincide con hangxu, pero no con hangu.
Para buscar valores que contengan una cadena específica, como con el patrón *word* (equivalente a WHERE field_a LIKE '%word%' en SQL), utilice token-based wildcard query. Con este enfoque, el rendimiento de la consulta no se degrada a medida que aumenta el volumen de datos.
Para excluir datos que coincidan con un patrón, agregue el objeto WildcardQuery a BoolQuery.mustNotQueries. Esta configuración equivale al operador NOT LIKE de SQL. Para obtener información sobre cómo configurar BoolQuery, consulte Boolean query.
Establezca el tipo de consulta como WildcardQuery cuando llame a search. Utilice SearchQuery para configurar el límite de resultados, el recuento total y otros parámetros generales de la consulta.
SearchResponse search(SearchRequest request)
El siguiente ejemplo busca valores Keyword en el campo product_name que coincidan con el patrón table*e. La consulta devuelve hasta 10 filas y el número total de coincidencias.
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
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 de datos. |
|
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 |
Las columnas que se devolverán. Si no se configura 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 que corresponden a campos de enrutamiento personalizados. Deje este parámetro sin configurar si no se ha definido un 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 como un objeto |
|
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 |
|
collapse (opcional) |
Collapse |
La configuración de colapso de campos, que elimina duplicados en los resultados según un campo especificado. Para obtener detalles sobre la configuración, consulte Collapse query results. |
|
sort (opcional) |
Sort |
El orden de clasificación de los resultados. Para obtener 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 agregación. Para obtener detalles sobre la configuración, consulte Aggregation. |
|
groupByList (opcional) |
|
La configuración de agrupación. Para obtener 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 WildcardQuery que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
fieldName (obligatorio) |
String |
El nombre del campo |
|
value (obligatorio) |
String |
Un patrón de consulta que contiene caracteres comodín. La longitud máxima es de 32 caracteres y la comparación distingue entre mayúsculas y minúsculas. En un campo |
|
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 a la puntuación de relevancia BM25. Este parámetro no afecta la coincidencia ni el número de filas devueltas. Solo afecta el orden de los resultados cuando se utiliza |
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. Configure este parámetro solo si tanto |
|
returnAll (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributos de la tabla de datos. El valor predeterminado es |
|
returnAllFromIndex (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributos indexadas. El valor predeterminado es |
Valores devueltos
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 |
|
Las coincidencias 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 |