Utilice Tablestore SDK for Python para buscar un valor de campo o token que coincida exactamente con cualquier valor de consulta especificado.
Requisitos previos
Instale Tablestore SDK for Python e inicialice un cliente.
Descripción
Una consulta de términos busca coincidencias con varios valores en un campo. Una fila coincide si alguno de los valores de la consulta es una coincidencia exacta. En campos no textuales como Keyword y Long, el valor del campo debe coincidir exactamente con uno de los valores de la consulta. Este comportamiento es similar a la condición IN de SQL. En un campo Text, una fila coincide si uno de sus tokens coincide exactamente con un valor de la consulta. Los valores de la consulta no se tokenizan. La tokenización puede variar según las configuraciones del analizador, las actualizaciones del algoritmo y el idioma. No utilice una consulta de términos para buscar una cadena completa en un campo Text. Al invocar el método search, establezca el tipo de consulta en TermsQuery. Para obtener información sobre los tipos de campo, consulte String types.
TermsQuery(field_name, column_values, weight=None)
El siguiente ejemplo consulta filas en las que el campo category coincide exactamente con books o games, y devuelve hasta 10 filas junto con el número total de filas coincidentes.
query = TermsQuery("category", ["books", "games"])
search_query = SearchQuery(
query,
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
print(row)
Parámetros
Solicitud de búsqueda
El método search incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
table_name (obligatorio) |
|
El nombre de la tabla de datos. |
|
index_name (obligatorio) |
|
El nombre del índice de búsqueda. |
|
search_query (obligatorio) |
|
La condición de consulta y las configuraciones comunes de la consulta. |
|
columns_to_get (opcional) |
|
La configuración de columnas a devolver. Si no se especifica este parámetro, solo se devuelven las columnas de clave principal. |
|
routing_keys (opcional) |
|
La lista de valores de clave principal para los campos de enrutamiento personalizado. No es necesario especificar este parámetro si no se ha configurado el enrutamiento personalizado. |
|
timeout_s (opcional) |
|
El tiempo de espera de la solicitud en segundos. Si no se especifica este parámetro, se utiliza el tiempo de espera definido a nivel de cliente. |
Configuración de la consulta
search_query es de tipo SearchQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
query (obligatorio) |
|
La condición de consulta. Establezca este parámetro en |
|
sort (opcional) |
|
El orden de clasificación de los resultados de la consulta. Para obtener más información, consulte Sort and paginate results. |
|
get_total_count (opcional) |
|
Indica si se debe devolver el número total de filas coincidentes. Valor predeterminado: |
|
next_token (opcional) |
|
El token de paginación. Establezca este parámetro con el valor |
|
offset (opcional) |
|
El desplazamiento desde el cual comienza la consulta actual. Utilice este parámetro para la paginación superficial. |
|
limit (opcional) |
|
El número máximo de filas a devolver. Si este parámetro se establece en |
|
aggs (opcional) |
|
Las configuraciones de agregación. Para obtener más información, consulte Aggregation. |
|
group_bys (opcional) |
|
Las configuraciones de agrupación. Para obtener más información, consulte Aggregation. |
|
collapse_field (opcional) |
|
La configuración de colapso de resultados, que elimina duplicados con base en un campo especificado. Para obtener más información, consulte Collapse query results. |
|
highlight (opcional) |
|
La configuración de resumen y resaltado para campos |
Condición de consulta
search_query.query es de tipo TermsQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
field_name (obligatorio) |
|
El nombre del campo indexado que se va a consultar. |
|
column_values (obligatorio) |
|
La lista de valores de consulta. Se pueden especificar hasta 1,024 valores. Una fila coincide si alguno de los valores de la consulta es una coincidencia exacta. En un campo |
|
weight (opcional) |
|
El peso de relevancia de la condición de consulta. El valor debe ser un número de punto flotante positivo. Un valor mayor contribuye más a 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 cuando los resultados se clasifican por puntuación de relevancia. Valor predeterminado: |
Columnas de retorno
columns_to_get es de tipo ColumnsToGet e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
column_names (opcional) |
|
Los nombres de las columnas de atributos a devolver. Especifique este parámetro únicamente cuando |
|
return_type (opcional) |
|
El modo de retorno de columnas. |
Respuesta
El método search devuelve un objeto SearchResponse. La siguiente tabla describe los campos principales.
|
Campo |
Tipo |
Descripción |
|
rows |
|
Las filas devueltas por la consulta actual. El número de filas no supera el valor de |
|
next_token |
|
El token para la página siguiente. Si este campo no está vacío, páselo a la siguiente solicitud para continuar la lectura. |
|
total_count |
|
El número de filas coincidentes. El valor depende de la configuración de |
|
is_all_succeed |
|
Indica si se consultaron todas las particiones del índice. Si el valor es |
|
agg_results |
|
Los resultados de agregación. Este campo está vacío si no se configura |
|
group_by_results |
|
Los resultados de agrupación. Este campo está vacío si no se configura |
|
search_hits |
|
Los aciertos de búsqueda, que incluyen información extendida como puntuaciones de relevancia, resaltados y filas secundarias coincidentes. |
Respuesta compatible con tuplas
A partir de Tablestore SDK for Python 5.2.0, las API de búsqueda devuelven objetos de respuesta en lugar de tuplas. La versión 5.1.0 y anteriores devuelven tuplas directamente. En la versión 5.2.1 y posteriores, puede invocar SearchResponse.v1_response() para obtener una tupla compatible con versiones anteriores. Para código nuevo, acceda directamente a los atributos de SearchResponse y así evitar errores de desempaquetado si se extienden los campos de la respuesta.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()