122 votes

Google App Engine : Est-il possible de faire une requête Gql comme ?

Un simple vraiment. En SQL, si je veux Rechercher un champ de texte pour un couple de personnages, je peux faire :

La documentation de App Engine ne fait aucune mention de la façon d’y parvenir, mais il est certainement un problème assez courant ?

Anthony

81voto

Dave Webb Points 90034

BigTable, qui est la base de données back-end pour l'Application du Moteur, à l'échelle de plusieurs millions d'enregistrements. Pour cette raison, App Engine ne vous permettra pas de le faire toute requête qui entraînera une analyse de la table, que la performance serait terrible pour un bien rempli le tableau.

En d'autres termes, chaque requête doit utiliser un index. C'est pourquoi vous ne pouvez le faire =, > et < des requêtes. (En fait, vous pouvez aussi le faire != , mais l'API n'ceci à l'aide d'une combinaison de > et < des requêtes.) C'est aussi pourquoi l'environnement de développement surveille toutes les questions que vous faites et ajoute automatiquement les index manquants à votre index.yaml le fichier.

Il n'y a aucun moyen de l'indice pour un LIKE de la requête de sorte qu'il n'est tout simplement pas disponible.

Avoir une montre de ce Google IO session pour un meilleur explication plus détaillée de ce.

12voto

jbochi Points 12280

Bien App Engine ne prend pas en charge les requêtes de type, avoir un regard sur les propriétés ListProperty et StringListProperty. Lorsque le test d'égalité se fait sur ces propriétés, le test sera effectivement appliquée sur tous les membres de la liste, par exemple, list_property = value teste si la valeur apparaît n'importe où dans la liste.

Parfois, cette fonctionnalité peut être utilisée comme une solution de contournement pour le manque de demandes similaires. Par exemple, il est possible de faire de la simple recherche de texte, tel que décrit sur ce post.

9voto

musketyr Points 448

Vous devez utiliser le service de recherche pour effectuer une recherche plein texte des requêtes similaires à SQL LIKE.

Gaelyk fournit un langage spécifique au domaine pour effectuer plus convivial requêtes de recherche. Pour l'exemple suivant extrait de trouver des dix premiers livres triées de la plus récente avec les titres comportant fern et le genre correspondant exactement thriller:

def documents = search.search {
    select all from books
    sort desc by published, SearchApiLimits.MINIMUM_DATE_VALUE
    where title =~ 'fern'
    and genre =  'thriller'
    limit 10
}

Comme est écrit comme Groovy match opérateur =~. Il prend en charge des fonctions telles que distance(geopoint(lat, lon), location) .

6voto

J.F. Sebastian Points 102961

@Dave Webb

Vous pouvez rechercher une table pour des mots complets. Voir SearchableModel .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X