La clase Query

La clase Query representa una solicitud en el servicio de búsqueda para consultar el índice.

Query se define en el módulo google.appengine.api.search.

Introducción

La clase Query le permite especificar una cadena de consulta y otras opciones, como el orden de clasificación, el límite y un cursor, para una búsqueda en un índice. Para definir estas opciones, crea una instancia de la clase QueryOptions en el parámetro Query.options.

Por ejemplo, el siguiente fragmento de código solicita una búsqueda de documentos en los que first aparezca en el asunto y good aparezca en cualquier parte. Devuelve un máximo de 20 documentos, un solo cursor de documento para los resultados, ordena los resultados por asunto en orden descendente y devuelve los campos de autor, asunto y resumen, así como el contenido de un campo con fragmentos.

from google.appengine.api import search

...
results = index.search(search.Query(
    # Specify the query string using the Search API's Query language.
    query_string='subject:first good',
    options=search.QueryOptions(
        limit=20,
        cursor=search.Cursor(),
        sort_options=search.SortOptions(
            expressions=[
                search.SortExpression(expression='subject', default_value='')],
            limit=1000),
        returned_fields=['author', 'subject', 'summary'],
        snippeted_fields=['content'])))
...

Tienes la opción de devolver un cursor con cada conjunto de resultados de búsqueda. Este cursor te permite desplazarte más fácilmente por los resultados de búsqueda. Para obtener un cursor, especifícalo en QueryOptions.cursor y extrae el cursor de la siguiente solicitud de SearchResults.cursor. De esta forma, puedes continuar la búsqueda desde el último documento encontrado, tal como se muestra a continuación:

...
results = index.search(
    search.Query(query_string='subject:first good',
          options=search.QueryOptions(cursor=results.cursor)))

Constructor

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

class Query(query_string, options=None, enable_facet_discovery=False, return_facets=None, facet_options=None, facet_refinements=None)

Solicita al servicio de búsqueda que consulte un índice y especifica los parámetros de esa consulta.

Argumentos

query_string

La consulta para buscar coincidencias en los documentos del índice. Una consulta es una expresión booleana que contiene términos. Por ejemplo, la consulta job tag:"very important" sent < 2011-02-28 busca documentos que contengan el término job en cualquier campo, la frase very important en un campo tag y una fecha sent anterior al 28 de febrero del 2011.

opciones

Instanciación de la clase QueryOptions con instrucciones para posprocesar los resultados de búsqueda.

enable_facet_discovery

Habilita la detección de las facetas más relevantes que usan los documentos que cumplen esta consulta de búsqueda y devuélvelas.

return_facets

Un iterable de FacetRequest o basestring como nombre de faceta para devolver una faceta específica con el resultado.

facet_options

FacetOption que describe el procesamiento de las facetas.

facet_refinements

Un iterable de objetos FacetRefinement o cadenas de tokens de refinamiento que se usan para filtrar los resultados de búsqueda en función de un valor de faceta. Las refinas de diferentes facetas serán conjunciones y las refinas de la misma faceta serán disyunciones.

Valor de resultado

Una nueva instancia de la clase Query.

Excepciones

TypeError

Se genera cuando query_string no es una cadena o options no es un objeto QueryOptions.

ValueError

Se genera cuando no se puede analizar el query_string.

Propiedades

Una instancia de la clase Query tiene las siguientes propiedades:

query_string

Devuelve la cadena de consulta para buscar en esta solicitud.

opciones

Devuelve el QueryOptions que define el posprocesamiento de los resultados de búsqueda.