Question

Le langage de requête Google App Engine Datastore (GQL) ne propose pas les opérateurs comme inexactes "LIKE" ou même de la casse. On peut se déplacer dans le cas question sensible en stockant une version minuscule d'un champ. Mais si je veux rechercher une personne, mais je ne suis pas sûr de l'orthographe du nom? Y at-il un modèle accepté pour faire face à ce scénario?

Était-ce utile?

La solution

Je cite la documentation:

Astuce: Les filtres de requête ne sont pas une façon explicite de faire correspondre une partie seulement d'une valeur de chaîne, mais vous pouvez simuler un match de préfixe à l'aide des filtres d'inégalité:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")

correspond à chaque entité MyModel avec un accessoire de propriété de chaîne qui commence par les caractères abc. La chaîne unicode u "\ uFFFD" représente le plus grand caractère Unicode possible. Lorsque les valeurs de propriété sont classés dans un index, les valeurs qui se situent dans cette gamme sont toutes les valeurs qui commencent par le préfixe donné.

http://code.google.com/appengine/docs/ python / datastore / queriesandindexes.html

Une autre option est le SearchableModel, cependant, je ne crois pas qu'il prend en charge les correspondances partielles.

http://billkatz.com/2008/8/A- SearchableModel-pour-App-Engine

Autres conseils

Vous pouvez stocker un soundex http://effbot.org/librarybook/soundex.htm version du nom dans le magasin de données. Ensuite, pour interroger un nom, soundex la requête et vérifier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top