2010-07-03 2 views
2

J'ai certaines entités qui ont une propriété StringProperty et j'aimerais interroger toutes les entités qui correspondent à une sous-chaîne. Y a-t-il un moyen de le faire en utilisant seulement GQL?GQL: Recherche toutes les entités qui contiennent une sous-chaîne

Par exemple, si mon datastore ressemble à ceci:

ID/Name  question_text 
-------------------------------------------------------------- 
3001  I like to eat chicken. 
3020  I only like to eat chicken that is deep fried. 
3045  I like filet mignon. 
3052  I like cheese. 

Quelle serait la requête GQL de trouver toutes les entités qui contiennent « poulet » dans QUESTION_TEXT?

+0

Votre réponse est dans [cet article] (http://stackoverflow.com/a/47811/5517975). :/ – afrodev

Répondre

3

Ce que vous cherchez est la recherche en texte intégral sur un StringProperty. C'est pour cela que SearchableModel a été créé.

Fondamentalement, il crée une nouvelle propriété sur votre entité qui est une liste de toutes les chaînes (et je crois bi- et tri-grammes) dans le champ de texte, en utilisant la file d'attente de tâches. Ensuite, la recherche de "poulet" est effectuée par une requête GQL comme SELECT * FROM whatever WHERE 'chicken' IN strings_list

+1

Juste pour clarifier, cela ne fonctionnera que pour ** mots complets **, donc la recherche de "chicke" ne retournera rien, étant donné vos données d'exemple. –

+0

Pourriez-vous s'il vous plaît donner un exemple qui fonctionnerait pour "chicke"? – DarkMatter

Questions connexes