我怀疑Search API如何进行查询,特别是它如何扫描索引中的文档。我怀疑如下:
我有一个包含很多GeoPoints文档的索引。我想列出特定半径内的点。例如,如果我在索引中有20万个文档并进行类似这样的搜索:
String query = distance(geopoint(MY_GEOPOINT), store_location) < 10000
它将列出半径为10公里的商店。
我的问题如下:Search API将如何进行?它会扫描2000万份文件(需要很长时间),还是会以某种方式进行优化?
我因为性能而质疑,我正在开发一个将使用GeoSearch的应用程序,我担心它随着数据库的增长而变慢。
感谢您的帮助。 亲切的问候JLuiZ20
答案 0 :(得分:0)
它肯定不会扫描所有记录。您可以从https://cloud.google.com/appengine/training/fts_adv/
中的文档推断出这一点因为geopoint是受支持的数据类型并且具有距离内置函数并且支持地理空间查询,所以它可以以一种可以从点查询半径的方式有效地索引地理点。 appengine docs没有提到所使用的算法,它可以使用许多这样的算法,但你打赌它有效,否则它不会是一种受支持的类型。