Utilice el SDK de Tablestore para Python con el fin de consultar un campo Text según el orden y la posición de los tokens.
Requisitos previos
Instale Tablestore SDK for Python e inicialice un cliente.
Descripción
Una consulta de coincidencia de frases busca en un campo Text (consulte String types) los tokens que aparecen en el orden y las posiciones especificados. Tanto el valor del campo como el texto de la consulta se tokenizan mediante el analizador configurado para el índice de búsqueda. A diferencia de Match query, que solo verifica si los tokens coinciden, esta consulta también comprueba su orden y posición. Utilice slop para permitir separaciones entre tokens adyacentes.
MatchPhraseQuery(field_name, text, weight=None, slop=None)
A continuación se muestra un ejemplo que consulta filas donde el campo description contiene los tokens tablestore y durable de forma consecutiva y en orden.
query = MatchPhraseQuery("description", "tablestore durable")
response = client.search(
"example_table",
"example_index",
SearchQuery(
query,
sort=Sort([ScoreSort()]),
limit=10,
get_total_count=True,
),
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
for hit in response.search_hits:
print(hit.score, hit.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 generales de la misma. |
|
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) |
|
Los valores de clave principal de los campos de enrutamiento personalizado. Este parámetro no es necesario si no se ha configurado un 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 criterio de ordenamiento de los resultados. 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. Pase el valor de |
|
offset (opcional) |
|
El desplazamiento desde el cual comienza la consulta. Utilice este parámetro para una 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 de métricas. Para obtener más información, consulte Aggregation. |
|
group_bys (opcional) |
|
Las configuraciones de agrupamiento. Para obtener más información, consulte Aggregation. |
|
collapse_field (opcional) |
|
La configuración de colapso de resultados. Para obtener más información, consulte Collapse query results. |
|
highlight (opcional) |
|
La configuración de resumen y resaltado para campos |
Condición de coincidencia de frases
search_query.query es de tipo MatchPhraseQuery e incluye los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
field_name (obligatorio) |
|
El nombre del campo |
|
text (obligatorio) |
|
El texto de la consulta. Se tokeniza mediante el analizador del campo y se compara según el orden y la posición de los tokens. |
|
weight (opcional) |
|
El peso de la consulta, que debe ser un número de punto flotante positivo. Valor predeterminado: |
|
slop (opcional) |
|
La separación posicional máxima permitida entre tokens de consulta adyacentes. 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 que se deben 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. La cantidad no supera el valor de |
|
next_token |
|
El token para la siguiente página. Un valor vacío indica que no hay más datos disponibles. |
|
total_count |
|
El número de filas coincidentes. El valor depende de |
|
is_all_succeed |
|
Indica si se consultaron todas las particiones del índice. Si el valor es |
|
agg_results |
|
Los resultados de la agregación de métricas. Este campo está vacío si no se configura |
|
group_by_results |
|
Los resultados del agrupamiento. Este campo está vacío si no se configura |
|
search_hits |
|
Los aciertos de la búsqueda, que incluyen información extendida como filas, puntuaciones de relevancia y resaltados. |
Respuesta compatible con tuplas
A partir de la versión 5.2.0 del SDK de Tablestore para Python, las API de búsqueda devuelven objetos de respuesta en lugar de tuplas. Las versiones 5.1.0 y anteriores devuelven tuplas directamente. En la versión 5.2.1 y posteriores, puede llamar a 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 amplían los campos de la respuesta.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()