как эффективно запускать два фильтра неравенства по запросам в приложении

Я знаю, что в приложении есть ограничение «Фильтры неравномерности разрешены только на одном свойстве», как описано здесь: http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Introducing_Indexes

Однако есть ли способ существенно запустить два фильтра, или это просто невозможно? Например, если у меня был вид сущности, который просто имел координату X и Y, и мне нужны все объекты, которые находятся в определенном диапазоне от X1 до X2 и от Y1 до Y2, есть ли способ запросить для всех объектов из X1 в X2 отсортированы по их значениям Y, а затем легко захватить соответствующие между моим желаемым диапазоном значений Y?

Если это так, есть ли у кого-нибудь примерный код для демонстрации?

Если это соответствует вашим данным, вы можете дискретировать свои X и Y в бункеры, генерировать hash двух значений и хранить их на модели. Затем вы можете делать точные поиски хешей (ов), которые перекрывают область, в которую вы хотите искать. Затем вручную отфильтруйте результаты, которые находятся за пределами вашего региона.

Это по существу то, что делает геомодель для широты / долготы.

Согласно недавнему разговору Google I / O Альфреда Фуллера, они работают над поддержкой нескольких фильтров неравенства по числовым свойствам.

В зависимости от того, что вы пытаетесь сделать, вы можете найти этот MultiInequalityMixin интересным. Он в значительной степени описывает то, что вы описываете, передавая первое неравенство через базу данных Google и делая последующие неравенства в качестве фильтров. Отказ от ответственности: это довольно схематичная реализация идеи, которую я имел более года назад, и на самом деле не все закончилось …

Если вам нужна эффективная индексация по двум осям, то, как говорит Саксонский Друс, для чего требуется какой-то алгоритм geohash и т. Д.

Давайте будем гением компьютера.