App Engine全文搜索与Geohashing进行位置查询

时间:2012-07-16 13:29:30

标签: google-app-engine geohashing

我正在考虑将应用程序从RoR移植到以地理搜索为中心的Python App Engine。我一直在使用开源GeoModel(即geohashing)库中的一个,以允许应用程序处理回答诸如“这附近的餐馆(lat / lng对)”等问题的查询以及那种性质的事情。
GeoModel使用ListProperty创建了一个重型索引,让我关注定价,因为我有大约1000万个需要加载到生产中的实体。

我今天早上发现的这篇文章在成本方面看起来非常可怕:

https://groups.google.com/forum/?fromgroups#!topic/google-appengine/-FqljlTruK4

所以我的问题是 - 现在谷歌已经发布了支持地理搜索的全文搜索,这是一个没有实际意义的概念吗?目前还不清楚这个新API背后会发生什么,我担心索引大小可能与我使用GeoModel方法一样大。

搜索API的另一个问题是,似乎我不仅需要在数据存储区中创建我的模型,而且还要将其中的一些数据(GeoPtProperty和至少它所代表的模型的entity_key)复制到Documents中。大大增加了我的数据集。

对此有何想法?目前我正在考虑把这个端口刮得太贵,虽然到目前为止我真的很喜欢在App Engine环境中工作,并且很想从我的某些应用程序中脱离EC2。

1 个答案:

答案 0 :(得分:1)

你在这里问了很多问题:

  • 正在设计一个没有实际意义的概念:可能不是,我怀疑Search API使用geohashing或其类似的位置搜索。

  • 您可以使用搜索API与自己实施:是的,但我不知道这种或那种费用。

  • 在app引擎上的地理位置非常昂贵:在消息线程中,由于高索引写入成本,成本很差。您必须设计地理数据以最小化索引。如果GeoModel在列表中放入了很多索引值,那么您可能会遇到麻烦 - 我不会直接使用它而不知道索引的工作原理。我的猜测是,如果降低位置精度,可以减少索引条目的数量,这可以为您节省大量成本。

  • 如线程中所述,您可以在CloudSQL中运行geohashing。