Una consulta de coincidencia de frases con el Tablestore SDK for Java busca en un campo Text según el orden y la posición de los tokens, y devuelve las filas que cumplen la condición de frase junto con sus puntuaciones de relevancia.
Requisitos previos
Instale Tablestore SDK for Java e inicialice el cliente.
Descripción de la función
Una consulta de coincidencia de frases busca tokens que aparecen de forma consecutiva, en el orden y las posiciones especificados, dentro de un campo Text. Para obtener información sobre el tipo de campo, consulte String types. El valor del campo y el texto de consulta se analizan mediante el analizador configurado al crear el índice de búsqueda. Si no se configura ningún analizador, se utiliza la tokenización de palabra única de forma predeterminada.
Esta consulta requiere que todos los tokens de búsqueda aparezcan en el mismo orden y en posiciones adyacentes. Por ejemplo, el texto de consulta this is coincide con this is tablestore, pero no con this table is ni con is this a table. Una match query solo verifica si los tokens coinciden, sin exigir que sean adyacentes o que respeten el mismo orden del texto de consulta.
Si un campo Text utiliza el analizador difuso, la consulta de coincidencia de frases permite realizar coincidencias difusas similares a las de una wildcard query, pero con menor latencia de consulta.
En el siguiente ejemplo se consultan filas cuyo campo description contiene de forma consecutiva los tokens tablestore y durable en ese orden. La consulta devuelve hasta 10 filas, el número total de filas coincidentes y las puntuaciones de relevancia.
String tableName = "example_table";
String indexName = "example_index";
MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
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
Solicitud de búsqueda
request es un objeto SearchRequest que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
String |
Nombre de la tabla. |
|
indexName (obligatorio) |
String |
Nombre del índice de búsqueda. |
|
searchQuery (obligatorio) |
SearchQuery |
Condición de consulta y configuración general de la consulta. |
|
columnsToGet (opcional) |
SearchRequest.ColumnsToGet |
Configuración de las columnas devueltas. Si omite este parámetro, solo se devuelven las columnas de clave principal. |
|
timeoutInMillisecond (opcional) |
int |
Tiempo de espera de la consulta a nivel de solicitud, en milisegundos. El valor predeterminado es |
|
routingValues (opcional) |
|
Valores de clave principal para 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 |
Condición de consulta. Establezca este parámetro en |
|
offset (opcional) |
Integer |
Posición inicial de la consulta. |
|
limit (opcional) |
Integer |
Número máximo de filas por devolver. Establezca este parámetro en |
|
highlight (opcional) |
Highlight |
Configuración de resumen y resaltado para campos |
|
collapse (opcional) |
Collapse |
Configuración de colapso de campos, que deduplica los resultados según un campo especificado. Para más detalles sobre la configuración, consulte Collapse query results. |
|
sort (opcional) |
Sort |
Orden de clasificación de los resultados. Para más detalles sobre la configuración, consulte Sort and paginate results. |
|
trackTotalCount (opcional) |
int |
Número máximo esperado de filas coincidentes por contar. El valor predeterminado es |
|
filter (opcional) |
SearchFilter |
Filtro que se aplica a los resultados de |
|
aggregationList (opcional) |
|
Configuración de agregaciones. Para más detalles sobre la configuración, consulte Aggregation. |
|
groupByList (opcional) |
|
Configuración de agrupación. Para más detalles sobre la configuración, consulte Aggregation. |
|
token (opcional) |
byte[] |
Token de paginación. Establezca este parámetro con el valor |
Condición de coincidencia de frases
request.searchQuery.query es un objeto MatchPhraseQuery que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
fieldName (obligatorio) |
String |
Nombre del campo de índice |
|
text (obligatorio) |
String |
Texto de consulta. El texto se analiza mediante el analizador del campo y se compara según el orden y la posición de los tokens. |
|
weight (opcional) |
float |
Peso de la consulta. El valor predeterminado es |
Columnas devueltas
request.columnsToGet es un objeto SearchRequest.ColumnsToGet que contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
columns (opcional) |
|
Columnas de atributos por devolver. Establezca este parámetro solo si tanto |
|
returnAll (opcional) |
boolean |
Indica si se deben devolver todas las columnas de atributos de la tabla. El valor predeterminado es |
|
returnAllFromIndex (opcional) |
boolean |
Indica si se deben devolver todas las columnas de atributos indexadas. El valor predeterminado es |
Valores devueltos
Respuesta de la consulta
El método search devuelve un objeto SearchResponse. La siguiente tabla describe los campos principales.
|
Nombre |
Tipo |
Descripción |
|
totalCount |
long |
Número de filas coincidentes. Llame a |
|
rows |
|
Filas devueltas en la respuesta actual. Llame a |
|
searchHits |
|
Coincidencias de la consulta. Llame a |
|
nextToken |
byte[] |
Token de la página siguiente. Llame a |
|
isAllSuccess |
boolean |
Indica si todas las particiones del índice se consultaron correctamente. Llame a |
Coincidencia de consulta
response.searchHits[] es un objeto SearchHit que contiene los siguientes campos principales.
|
Nombre |
Tipo |
Descripción |
|
row |
Row |
Fila coincidente. Llame a |
|
score |
Double |
Puntuación de relevancia. Llame a |
|
highlightResultItem |
HighlightResultItem |
Resultado de resumen y resaltado. Llame a |