Classe Query

La classe Query représente une requête sur le service de recherche pour interroger l'index.

La classe Query est définie dans le module google.appengine.api.search.

Présentation

La classe Query permet de spécifier une chaîne de requête et d'autres options, comme l'ordre de tri, la limite et un curseur, en vue d'effectuer une recherche sur un index. Ces options se définissent par instanciation de la classe QueryOptions à l'aide des paramètres Query.options.

Par exemple, le fragment de code ci-après demande une recherche de documents à partir du terme first dans le sujet et du terme good présent partout dans le texte, selon les critères suivants : renvoi de 20 documents au plus, curseur de résultats sur un seul document, tri par sujet et par ordre décroissant, champs d'auteur, de sujet, de résumé et d'extrait de contenu.

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'])))
...

Si vous le souhaitez, vous pouvez renvoyer un curseur avec chaque ensemble de résultats de recherche. Ce curseur permet de parcourir plus facilement les pages de résultats. Pour obtenir un curseur, vous devez le spécifier à l'aide du paramètre QueryOptions.cursor puis, pour la requête suivante, l'extraire de SearchResults.cursor. La recherche se poursuivra à partir du dernier document trouvé, comme indiqué ci-dessous :

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

Constructor

Le constructeur de la classe Query est défini comme suit :

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

Demandez au service de recherche d'interroger un index en spécifiant les paramètres de cette requête.

Arguments

query_string

Chaîne de requête à mettre en correspondance avec les documents de l'index. Une requête est une expression booléenne contenant des termes. Par exemple, la requête job tag:"very important" sent < 2011-02-28 recherche des documents contenant le terme job dans n'importe quel champ, et contient également l'expression very important dans un champ tag et une date sent antérieure au 28 février 2011.

options

Instanciation de la classe QueryOptions avec des instructions pour le post-traitement des résultats de recherche.

enable_facet_discovery

Active la découverte des attributs les plus pertinents présents dans les documents qui répondent à cette requête de recherche et les renvoie.

return_facets

Valeur itérable de FacetRequest ou de basestring en tant que nom d'attribut permettant de renvoyer un attribut spécifique avec le résultat.

facet_options

Paramètre de FacetOption décrivant le traitement des attributs.

facet_refinements

Valeur itérable d'objets FacetRefinement ou de chaînes de jetons d'affinage utilisés pour filtrer les résultats de recherche en fonction d'une valeur d'attribut. Les affinages de différents attributs constituent une conjonction, alors que les affinages d'un même attribut constituent une disjonction.

Result value

Nouvelle instance de la classe Query.

Exceptions

TypeError

Générée lorsque la requête query_string n'est pas une chaîne ou que les options ne sont pas un objet QueryOptions.

ValueError

Générée lorsque la requête query_string n'a pas pu être analysée.

Propriétés

Une instance de la classe Query possède les propriétés suivantes :

query_string

Renvoie la chaîne de requête à rechercher dans cette requête.

options

Renvoie le QueryOptions définissant le post-traitement des résultats de recherche.