1

The App Engine Search API имеет поле GeoPoint. Можно ли использовать радиальный поиск? Как и в случае с GeoPoint, найдите все документы, которые попадают в определенный радиус.App Engine поиск api Географический поиск

На данный момент это выглядит как GeoSpecial Query по приглашению, поэтому я ищу простую альтернативу, которая мне легко понять.

Кроме того, если это имеет значение, я использую objectify, и this answer слишком сложно для меня, чтобы понять, как его реализовать.

+1

В Python это очень просто - на https://cloud.google.com/appengine/training/fts_adv/lesson1 все, что вам нужно, это передать в строку index.search строку запроса, такую ​​как «расстояние» (store_location, geometoint (-33.857, 151.215)) <45000 "(адаптировано, конечно, для использования конкретного геодезического и радиуса, который вы хотите). В Java/objectify я не знаю более простой способ, чем тот, который вы считаете слишком сложным. «Геопространственные запросы» (в Alpha и приглашение, как вы говорите) предназначены для хранилища данных - совершенно отдельно от API поиска, который работает с отдельными документами и индексами. –

+0

Спасибо, я пропустил это. Я думаю, что это должно сработать для моего дела. Это будет, по крайней мере, за день до того, как я смогу проверить это, поскольку я сейчас развиваюсь. Но спасибо! Я скажу вам, если это сработает. – learner

+0

Я бы попросил Google получить доступ к функции геообъявления - возможно, отправив ее в группу google Google. – stickfigure

ответ

0

Для поиска радиуса, используйте proximitySearch вместо bestBboxSearchCells (с использованием в вашей ссылки URL):

GeocellManager.proximitySearch(Point center, int maxResults, double maxDistance //... 

Использование можно увидеть в этой ссылке подробности методов: https://github.com/theganyo/javageomodel/blob/ce43c507ff671eb6f0998f7c7d78fd0c3877dbe7/geocell/src/main/java/com/beoui/geocell/GeocellManager.java

И код примера, это очень просто: https://github.com/theganyo/javageomodel/blob/master/geocell/src/test/java/com/beoui/utils/HowToUseGeocell.java

0

Как отметил Алекс Мартелли, строка запроса "distance(store_location, geopoint(-33.857, 151.215)) < 45000" эффективно даст результаты, которые вы ищете, заменив geopoint() на местоположение, которое вы ищете, и замените 45000 на расстояние, в пределах которого вы хотите, чтобы результаты были.

Эта строка запроса является агностикой времени выполнения и поэтому может использоваться таким же образом как для времени выполнения Python, так и для Java.

Если вы пошли другим способом, продуктом или решением, не стесняйтесь публиковать его здесь.

Смежные вопросы