在AppEngine查询中使用两个不等式

时间:2013-01-02 14:36:11

标签: android google-app-engine

  

可能重复:
  Google App Engine Geohashing

我正在尝试使用AppEngine来存储具有纬度和经度参数的模型。一切似乎都没问题,除非我尝试检索两个位置之间的所有用户。我这样做:

 String query = "select from " + TUser.class.getName();
 query += " WHERE ( iLatitude >= " + lat_min + " && iLatitude <= " + lat_max + ")";
 query += " && ( iLongitude >= " + lon_min + " && iLongitude <= " + lon_max + ")";
 List<TUser> obj = (List<TUser>)pm.newQuery(query).execute();

但是,如AppEngine文档中所述,这会引发:

 java.lang.IllegalArgumentException: Only one inequality filter per query is supported.  Encountered both latitude and longitude

我正试图为此找到一个工作场所,但没有运气。使用坐标总是需要至少两个不等式。那怎么能解决呢?有解决方案吗或者有谁知道什么时候会在AppEngine中实现?

由于数据库有数十万用户,我无法仅通过纬度过滤查询,然后使用FOR迭代结果以获得具有正确经度的查询。数据太多了。

谢谢,

1 个答案:

答案 0 :(得分:0)

您需要查看将瓷砖编码为单个字符串的geohash 检查this blog以了解如何使用它。