Geosearch Search API GAE过滤距离(geopoint(MY_GEOPOINT),store_location)< DISTANCE查询

时间:2016-03-28 22:16:05

标签: google-app-engine google-search-api gae-search

我怀疑Search API如何进行查询,特别是它如何扫描索引中的文档。我怀疑如下:

我有一个包含很多GeoPoints文档的索引。我想列出特定半径内的点。例如,如果我在索引中有20万个文档并进行类似这样的搜索:

String query = distance(geopoint(MY_GEOPOINT), store_location) < 10000

它将列出半径为10公里的商店。

我的问题如下:Search API将如何进行?它会扫描2000万份文件(需要很长时间),还是会以某种方式进行优化?

我因为性能而质疑,我正在开发一个将使用GeoSearch的应用程序,我担心它随着数据库的增长而变慢。

感谢您的帮助。 亲切的问候JLuiZ20

1 个答案:

答案 0 :(得分:0)

它肯定不会扫描所有记录。您可以从https://cloud.google.com/appengine/training/fts_adv/

中的文档推断出这一点

因为geopoint是受支持的数据类型并且具有距离内置函数并且支持地理空间查询,所以它可以以一种可以从点查询半径的方式有效地索引地理点。 appengine docs没有提到所使用的算法,它可以使用许多这样的算法,但你打赌它有效,否则它不会是一种受支持的类型。