2016-03-28 11 views
0

Arama API'sinin sorguları nasıl yaptığını, özellikle de Dizindeki Belgeleri nasıl tarayacağını bildiğim konusunda şüphelerim var. Şüphem şu şekildedir:Geosearch Search API GAE filtreleme mesafesi (geopoint (MY_GEOPOINT), store_location) <DISTANCE sorgular

Üzerinde çok sayıda Belge içeren bir Dizinim var. Belirli bir yarıçaptaki noktaları listelemek istiyorum. Örneğin, ben Endeksinde 20 milyon Belgeler varsa ve bunun gibi bir arama yaparsanız:

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

O 10 km'lik yarıçap üzerinde bulunan dükkanları listeler.

Sorum şu: Arama API'sı nasıl yapacak? 20 milyon belgeyi tarar mı (ve uzun zaman alır) yoksa bir şekilde optimize eder mi?

Performanstan dolayı sorgulama yapıyorum, GeoSearch'i kullanacak bir uygulama geliştiriyorum ve veritabanı büyüdükçe yavaşça almaktan korkuyorum.

Yardımlarınız için teşekkür ederiz. Saygılarımızla, JLuiZ20

cevap

0

kesinlikle tüm kayıtları taramayacaktır. Bunu, bu tür bir belgeyi https://cloud.google.com/appengine/training/fts_adv/

belgesindeki sonuçlardan çıkarabilirsiniz. Desteklenen bir veri türü olan jeopoint, yerleşik yerleşik mesafeye sahip olduğundan ve jeo uzamsal sorguları desteklediğinden, geopoints'i, bir alandan bir yarıçap üzerinde sorgulayabileceği şekilde verimli bir şekilde indeksleyebilir. puan. appengine docs, kullanılan algoritmadan bahsetmiyor, kullanabileceği pek çok algoritma var ama etkin bir şekilde bahse giriyorsunuz, aksi takdirde desteklenen bir tip olmayacaktı.

İlgili konular