【发布时间】:2012-05-30 02:34:08
【问题描述】:
我了解 Google AppEngine 每个查询仅支持一个不等式过滤器。此限制的解决方法是什么?有没有可以提供类似效果的解决方案?
【问题讨论】:
标签: google-app-engine google-cloud-datastore
我了解 Google AppEngine 每个查询仅支持一个不等式过滤器。此限制的解决方法是什么?有没有可以提供类似效果的解决方案?
【问题讨论】:
标签: google-app-engine google-cloud-datastore
其实GAE支持多个不等式过滤器,只要是on the same property即可。
此限制的解决方法是特定于数据的,例如这取决于您的数据的结构以及您希望如何查询它。例如,对于地理搜索,正如@Dan Holevoet 提到的,有各种地理散列算法。 基本上所有此类算法都涉及将多个属性组合为一个,同时量化属性(创建离散值)。例如,地理散列涉及将世界地图划分为固定大小的小区域(= 结合纬度/经度和量化),以便能够通过相等运算符进行搜索。
【讨论】:
每个查询是否有一个不等式过滤器的解决方法取决于您查询的数据集类型。
例如,如果您想使用纬度和经度地址查询位置数据,您通常需要查询两个属性(纬度和经度)的一系列值。但是,使用geohash 算法,您可以仅使用单个属性完成等效查询。
【讨论】:
当我处理这个问题时(示例搜索范围从 - 到),我使用带有单个不等式过滤器的查询。根据排序顺序(升序或降序),我选择上限或下限。之后,我以编程方式使用不在查询过滤器中的下限或上限过滤结果。
【讨论】: