2016-03-28 9 views
0

Search APIがクエリをどのように作成するか、特にインデックス内のドキュメントをスキャンする方法について疑問があります。私の疑いは以下の通りです:Geosearch Search API GAEフィルタリング距離(geopoint(MY_GEOPOINT)、store_location)<DISTANCEクエリ

私はジオポイントを持つドキュメントがたくさんあるインデックスを持っています。特定の半径にある点をリストしたいと思います。私は指数の20百万件の文書を持っており、このような検索を行う場合、例えば:

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

それは10キロの半径上にある店舗の一覧が表示されます。

私の質問は次のとおりです。Search APIはどのように機能するのですか? 20百万の文書をスキャンし(そして長い時間がかかりますか)、何らかの方法で最適化されますか?

私はGeoSearchを使用するアプリケーションを開発していますが、データベースが大きくなるにつれてゆっくりと取得することを恐れています。

ありがとうございました。 親切にしてくださいJLuiZ20

答えて

0

確かにすべてのレコードをスキャンしません。 https://cloud.google.com/appengine/training/fts_adv/

geopointは、サポートされているデータ型であり、距離組み込み関数を持ち、地理空間クエリをサポートしているため、ジオポイントを効率的にインデックスすることができます。ポイント。 appengine docsには、使用されているアルゴリズムは言及されていませんが、使用できるアルゴリズムはたくさんありますが、効率的であると賭けています。