come eseguire in modo efficace due filtri di disuguaglianza sulle query nel motore di app

Sono a conoscenza del fatto che il motore di app ha la restrizione di “I filtri di disuguaglianza sono consentiti su una sola proprietà” come descritto qui: http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Introducing_Indexes

Tuttavia esiste un modo per eseguire essenzialmente due filtri, o semplicemente non è ansible? Ad esempio, se avessi un tipo di entity framework che aveva semplicemente una coordinata X e Y, e volevo tutte le quadro che si trovano entro un certo intervallo da X1 a X2 e da Y1 a Y2, c’è un modo per interrogare tutte le quadro da X1 a X2 ordinati per i loro valori Y e quindi facilmente afferrare quelli rilevanti tra il mio intervallo desiderato per i valori Y?

In tal caso, qualcuno ha qualche codice di esempio da dimostrare?

Se si adatta ai tuoi dati, puoi discretizzare i tuoi X e Y in contenitori, generare un hash dei due valori e memorizzarli sul modello. Quindi puoi eseguire ricerche esatte per gli hash che si sovrappongono alla regione in cui vuoi effettuare la ricerca. Quindi, filtra manualmente i risultati che si trovano fuori dalla tua regione.

Questo è essenzialmente ciò che geomodel sta facendo per latitudine / longitudine.

Secondo il recente talk di Google I / O di Alfred Fuller, stanno lavorando sul supporto per filtri di disuguaglianza multipli su proprietà numeriche.

A seconda di ciò che stai cercando di fare, potresti trovare interessante questo MultiInequalityMixin . Fa praticamente quello che descrivi, passando la prima disuguaglianza attraverso il database di Google e facendo disuguaglianze successive come filtri. Disclaimer: è un’implementazione piuttosto abbozzata di un’idea che ho avuto più di un anno fa e che non ha davvero finito …

Se hai bisogno di indicizzazione efficiente su due assi, allora come dice Saxon Druce, una sorta di algoritmo geohash ecc è ciò che è richiesto.