Che cosa è un buon modello per le query inesatte nel Google App Engine datastore?
-
21-08-2019 - |
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?
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.