1

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

我有一个索引,上面有很多带有 GeoPoints 的文档。我想列出特定半径内的点。例如,如果我在索引中有 2000 万个文档并进行如下搜索:

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

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

我的问题如下: Search API 将如何做到这一点?它会扫描 2000 万份文档(并且需要很长时间)还是会以某种方式进行优化?

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

谢谢你的帮助。亲切的问候 JLuiZ20

4

1 回答 1

0

它肯定不会扫描所有记录。您可以从https://cloud.google.com/appengine/training/fts_adv/中的文档中推断出这一点

由于 geopoint 是一种受支持的数据类型,并且具有内置距离功能并支持地理空间查询,因此它可以高效地索引地理点,从而可以从点查询半径。appengine 文档没有提到使用的算法,它可以使用许多这样的算法,但你敢打赌它的效率很高,否则它不会是受支持的类型。

于 2016-03-29T03:21:03.237 回答