Todos los productos
Search
Centro de documentos

Tablestore:Match query

Última actualización: Sep 03, 2026

Una consulta de coincidencia con el Tablestore SDK for Java busca en campos Text o Keyword y devuelve las filas que cumplen las condiciones de coincidencia 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 busca en campos Text o Keyword. Para obtener información sobre los tipos de campo, consulte String types. Estos dos tipos de campo utilizan comportamientos de coincidencia diferentes:

  • Text: El valor del campo y el texto de la 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. El operador OR predeterminado coincide con un valor de campo que contiene cualquier token de la consulta. Puede usar el operador AND para exigir que coincidan todos los tokens de la consulta o especificar el número mínimo de tokens que deben coincidir.

  • Keyword: No se analiza ni el valor del campo ni el texto de la consulta. Una fila solo coincide si el valor completo del campo es igual al texto de la consulta.

Una consulta de coincidencia no requiere que los tokens coincidentes sean adyacentes o que estén en el mismo orden que el texto de la consulta. Para hacer coincidir tokens en orden, utilice una match phrase query. Si un campo Text usa el analizador difuso y necesita una búsqueda difusa de alto rendimiento, también se recomienda una consulta de frase coincidente.

El siguiente ejemplo consulta filas cuyo campo description contiene el token tablestore o durable y devuelve hasta 10 filas, el número total de filas coincidentes y las puntuaciones de relevancia.

String tableName = "example_table";
String indexName = "example_index";

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
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

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 común de la consulta.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

La configuración de columnas devueltas. 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 -1, lo que significa que no se establece un tiempo de espera de consulta por separado.

routingValues (opcional)

List<PrimaryKey>

Los valores de clave principal para los campos de enrutamiento personalizados. 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 MatchQuery para realizar una consulta de coincidencia.

offset (opcional)

Integer

La posición inicial de la consulta.

limit (opcional)

Integer

El número máximo de filas a devolver. Establezca este parámetro en 0 para no devolver ninguna fila.

highlight (opcional)

Highlight

La configuración de resumen y resaltado para campos Text. Para obtener detalles de configuración, consulte Summary and highlighting.

collapse (opcional)

Collapse

La configuración de colapso de campos, que deduplica los resultados según un campo especificado. Para obtener detalles de configuración, consulte Collapse query results.

sort (opcional)

Sort

El orden de clasificación de los resultados. Para obtener detalles de configuración, consulte Sort and paginate results.

trackTotalCount (opcional)

int

El número máximo esperado de filas coincidentes a contar. El valor predeterminado es TRACK_TOTAL_COUNT_DISABLED, que deshabilita el conteo. Establezca este parámetro en TRACK_TOTAL_COUNT para contar todas las filas coincidentes. Un valor menor mejora el rendimiento de la consulta.

filter (opcional)

SearchFilter

Un filtro que se aplica a los resultados de query.

aggregationList (opcional)

List<Aggregation>

La configuración de agregación. Para obtener detalles de configuración, consulte Aggregation.

groupByList (opcional)

List<GroupBy>

La configuración de agrupación. Para obtener detalles de configuración, consulte Aggregation.

token (opcional)

byte[]

El token de paginación. Establezca este parámetro en el valor nextToken de la respuesta anterior para continuar leyendo filas. Cuando establece token, el SDK borra sort porque el token ya contiene las condiciones de clasificación.

Condición de coincidencia

request.searchQuery.query es un objeto MatchQuery que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

fieldName (obligatorio)

String

El nombre del campo de índice Text o Keyword que se va a consultar.

text (obligatorio)

String

El texto de la consulta. Para un campo Text, el texto de la consulta se analiza mediante el analizador del campo. Para un campo Keyword, el texto de la consulta no se analiza.

operator (opcional)

QueryOperator

El operador utilizado para combinar los tokens de la consulta. OR (predeterminado) coincide con una fila si algún token coincide. AND exige que coincidan todos los tokens.

minShouldMatch (opcional)

String o int

El número mínimo de tokens de consulta que deben coincidir cuando operator es OR. Especifique un número entero como 2 o una cadena de porcentaje como "75%".

weight (opcional)

float

El peso de la consulta. El valor predeterminado es 1.0 y el valor debe ser un número de punto flotante positivo. Un valor mayor aumenta la contribución de esta consulta a la puntuación de relevancia sin cambiar el alcance de la coincidencia.

Importante

setMinimumShouldMatch(Integer) está obsoleto. Utilice setMinShouldMatch(int) o setMinShouldMatch(String).

Columnas devueltas

request.columnsToGet es un objeto SearchRequest.ColumnsToGet que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

columns (opcional)

List<String>

Las columnas de atributos a devolver. Establezca este parámetro solo si tanto returnAll como returnAllFromIndex son false. Si omite este parámetro, solo se devuelven las columnas de clave principal.

returnAll (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributos de la tabla. El valor predeterminado es false.

returnAllFromIndex (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributos indexadas. El valor predeterminado es false. Este parámetro y returnAll no pueden ser ambos true.

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

El número de filas coincidentes. Llame a getTotalCount() para obtener el valor. El valor devuelto depende de la configuración de trackTotalCount.

rows

List<Row>

Las filas devueltas en la respuesta actual. Llame a getRows() para obtener el valor. El número de filas no supera limit.

searchHits

List<SearchHit>

Las coincidencias de la consulta. Llame a getSearchHits() para obtener el valor. Este campo contiene puntuaciones de relevancia y resultados de resumen y resaltado.

nextToken

byte[]

El token de la página siguiente. Llame a getNextToken() para obtener el valor. Si el valor no es null, establézcalo como token en la siguiente solicitud para continuar leyendo filas.

isAllSuccess

boolean

Indica si todas las particiones del índice se consultaron correctamente. Llame a isAllSuccess() para obtener el valor. Si el valor es false, la respuesta contiene resultados parciales y totalCount puede ser menor que el número real de filas coincidentes.

Coincidencia de consulta

response.searchHits[] es un objeto SearchHit que contiene los siguientes campos principales.

Nombre

Tipo

Descripción

row

Row

La fila coincidente. Llame a getRow() para obtener el valor.

score

Double

La puntuación de relevancia. Llame a getScore() para obtener el valor. Cuando se utiliza ScoreSort, este campo contiene la puntuación real. Los tokens coincidentes y weight afectan la puntuación.

highlightResultItem

HighlightResultItem

El resultado de resumen y resaltado. Llame a getHighlightResultItem() para obtener el valor.

Ejemplos

Coincidir con todos los tokens de la consulta

Establezca operator en AND para coincidir con una fila solo si el valor del campo contiene todos los tokens de la consulta.

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable");
matchQuery.setOperator(QueryOperator.AND);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);

Establecer el número mínimo de tokens coincidentes

Cuando se utiliza el operador OR, establezca minShouldMatch para especificar el número mínimo de tokens de consulta que deben coincidir. El siguiente ejemplo requiere como mínimo dos tokens coincidentes.

MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore durable cloud");
matchQuery.setOperator(QueryOperator.OR);
matchQuery.setMinShouldMatch(2);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);