Domanda

Il linguaggio di query di Google App Engine datastore (GQL) non offre operatori inesatte come "Like" o anche tra maiuscole e minuscole. Si può aggirare la delicata questione caso per la memorizzazione di una versione minuscola di un campo. Ma cosa succede se voglio cercare una persona, ma non sono sicuro di ortografia del nome? Esiste un modello accettato per affrontare questo scenario?

È stato utile?

Soluzione

Citando dalla documentazione:

Suggerimento: I filtri di query non hanno un modo esplicito per abbinare solo una parte di un valore di stringa, ma è possibile simulare una partita prefisso utilizzando i filtri di disuguaglianza:

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

Questo corrisponde ogni entità MyModel con una proprietà puntello stringa che inizia con i caratteri abc. La stringa unicode u "\ uFFFD" rappresenta il più grande carattere Unicode possibile. Quando i valori delle proprietà sono ordinati in un indice, i valori che rientrano in questa fascia sono tutti i valori che iniziano con il prefisso specificato.

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

Un'altra opzione è la SearchableModel, però, io non credo che supporta le corrispondenze parziali.

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

Altri suggerimenti

Si potrebbe memorizzare un http://effbot.org/librarybook/soundex.htm versione del nome nel datastore. Poi, per interrogare un nome, Soundex la query, e guardate che fino.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top