Google app engine 如何在app engine中对查询有效运行两个不等式过滤器

Google app engine 如何在app engine中对查询有效运行两个不等式过滤器,google-app-engine,filter,inequality,Google App Engine,Filter,Inequality,我知道app engine有“仅允许对一个属性使用不平等过滤器”的限制,如下所述: 但是,是否有某种方法可以运行两个过滤器,或者这根本不可能?例如,如果我有一个简单的X和Y坐标的实体类型,并且我想要所有在X1到X2和Y1到Y2的特定范围内的实体,有没有某种方法可以查询从X1到X2的所有实体,按它们的Y值排序,然后轻松获取Y值所需范围内的相关实体 如果是这样,有人有一些示例代码来演示吗?如果它适合您的数据,您可以将X和Y离散化为多个容器,生成两个值的散列,并将其存储在模型上。然后,您可以精确查找与

我知道app engine有“仅允许对一个属性使用不平等过滤器”的限制,如下所述:

但是,是否有某种方法可以运行两个过滤器,或者这根本不可能?例如,如果我有一个简单的X和Y坐标的实体类型,并且我想要所有在X1到X2和Y1到Y2的特定范围内的实体,有没有某种方法可以查询从X1到X2的所有实体,按它们的Y值排序,然后轻松获取Y值所需范围内的相关实体


如果是这样,有人有一些示例代码来演示吗?

如果它适合您的数据,您可以将X和Y离散化为多个容器,生成两个值的散列,并将其存储在模型上。然后,您可以精确查找与要搜索的区域重叠的散列。然后,手动筛选出您所在区域以外的结果


这基本上就是对纬度/经度所做的。

根据Alfred Fuller最近的研究,他们正在研究对数值属性的多个不等式过滤器的支持。

根据您的尝试,您可能会发现这一点 有趣。 它和你描述的差不多,将第一个不等式传递到谷歌的数据库,并将随后的不等式作为过滤器。免责声明:这是我一年多前的一个想法的一个相当粗略的实现,实际上并没有全部完成


如果您需要在两个轴上进行有效的索引,那么正如Saxon Druce所说,需要某种geohash etc算法。

有人知道这是否已经发生了吗?只有在对象查询中。比如:SomeModel.all().filter('a>',b.).filter('a2>',b2)这个模型有工作示例吗?就像我需要得到年龄>26和身高>113的结果一样。我将如何映射/查询它?以及年龄,您可以为每个用户存储“十年”,如0、10、20、30、40等。然后在身高>113、年龄在[20、30、40]中的位置进行查询(如此类推,直到100)]。然后,一旦得到结果,手动筛选出小于26的结果。