Функция расстояния в многозначном поле GeoPoint в API поиска - PullRequest
0 голосов
/ 30 октября 2018

Мы создаем поисковые индексы в Google App Engine, используя Google Cloud Search API. Индексный документ имеет столбец с типом данных Geo Point, скажем, locationGeoPt, в котором хранится пара широты и долготы наших адресов на запись. Таким образом, документ может иметь несколько пар широты и долготы в этом столбце следующим образом:

locationGeoPt: (32,651, -96,864) (33,114, -96,675)

Теперь идет часть запроса, нам нужно запросить этот документ, где расстояние этих адресов меньше некоторого заданного расстояния, что-то вроде следующего:

расстояние (locationGeoPt, геопункт (32.9654778, -96.82974030000003)) <400 </p>

Для этого мы используем функцию «расстояние», предоставляемую SEARCH API.

Теперь в чем проблема: То, что мы сравниваем с полем locationGeoPt, это пара LAT и Long для расстояния, скажем, 400, как написано выше. Поле 'locationGeoPt' хранит несколько пар LAT-LONG, но оно сравнивается с первым набором LAT-LONG и не сравнивается с оставшимся набором пар, если первое совпадение не удалось. Например, первая пара LAT-LONG в locationGeoPt находится не в пределах 400 метров, а вторая.

Кто-нибудь может подсказать, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...