La clase Cursor

La clase Cursor proporciona un cursor en el conjunto actual de resultados de búsqueda, lo que le permite obtener el siguiente conjunto en función de los criterios que especifique. El uso de cursores mejora el rendimiento y la coherencia de la paginación a medida que se actualizan los índices.

A continuación, se muestra cómo usar el cursor para obtener la siguiente página de resultados:

# Get the first set of results, and return a cursor with that result set.
# The first cursor tells the API to return cursors in the SearchResults object.
results = index.search(search.Query(query_string='some stuff',
    options=search.QueryOptions(cursor=search.Cursor()))

# Get the next set of results with a cursor.
results = index.search(search.Query(query_string='some stuff',
    options=search.QueryOptions(cursor=results.cursor)))

Si quieres seguir buscando desde cualquiera de los ScoredDocuments de SearchResults, activa Cursor.per_result True:

# get the first set of results, the first cursor is used to specify
# that cursors are to be returned in the SearchResults.
results = index.search(search.Query(query_string='some stuff',
    options=search.QueryOptions(cursor=Cursor(per_result=True)))

# this shows how to access the per_document cursors returned from a search
per_document_cursor = None
for scored_document in results:
    per_document_cursor = scored_document.cursor

# get the next set of results
results = index.search(search.Query(query_string='some stuff',
    options=search.QueryOptions(cursor=per_document_cursor)))

El cursor se puede almacenar en caché como una cadena segura para la Web que se puede usar para reconstruir el cursor. Por ejemplo,

next_cursor = results.cursor
next_cursor_url_safe = next_cursor.web_safe_string

// save next_cursor_url_safe
...
// extract next_cursor_url_safe

results = index.search(
    search.Query(query_string,
        cursor=search.Cursor(web_safe_string=next_cursor_url_safe)))

Constructor

El constructor de la clase Cursor se define de la siguiente manera:

class Cursor(web_safe_string=None, per_result=False)

Crea una instancia de la clase Cursor.

Argumentos

per_result

Si es true, devuelve un cursor por cada ScoredDocument en SearchResults. Si es false, devuelve un solo cursor para todos los SearchResults. Se ignora si se usa QueryOptions.offset, ya que el usuario es responsable de calcular el siguiente desplazamiento (si lo hay).

web_safe_string

Cadena de cursor devuelta por el servicio de búsqueda para que el servicio de búsqueda la interprete y obtenga el siguiente conjunto de resultados.

Valor de resultado

Una nueva instancia de la clase Cursor.

Excepciones

ValueError

Si el web_safe_string proporcionado por la API no tiene el formato requerido.

Propiedades

Una instancia de la clase Cursor tiene las siguientes propiedades:

per_result

Devuelve si se debe devolver un cursor por cada ScoredDocument de los resultados.

web_safe_string

Devuelve la cadena de cursor generada por el servicio de búsqueda.