Google Location API против Карт: почему одинаковые запросы дают разные результаты? - PullRequest
3 голосов
/ 22 октября 2009

В настоящее время я теряю голову над API AJAX от Google. Я превращаю структурированные данные о местоположении в запрос API локального поиска Google, чтобы предоставить пользователям альтернативный список результатов.

например:.

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&key=XXX&hl=en_US&mrt=localonly&rsz=large&q=pizza+Neustadt+DE

Однако API иногда ведет себя очень странно, часто не принимая во внимание определенные параметры, которые я ему передаю. Например:

Если я выполню поиск «Термин Римские ИТ» на Картах Google, то в Риме будет найдено все терминов , как и ожидалось. Если я повторяю тот же поиск по API, я получаю ноль результатов (мне нужно удалить либо «Рома», либо «Рим», чтобы он работал - Рома - это административный район, а Рим - название города).

Почему это?

Еще один пример. В Германии примерно 20 разных городов, поселков и районов под названием Нойштадт. Теперь, когда я выполняю поиск в Картах Google, он находит только один, если я не укажу дополнительный квалификатор, например регион или что-то подобное.

Теперь на уровне API я ожидал, что при передаче параметров широты / долготы вместе с запросом Нойштадта будет достаточно разумно выбрать правильный Нойштадт, взглянув на геокодирование. Но этого не происходит, он всегда выбирает один и тот же Нойштадт и игнорирует геоданные.

q=pizza+Neustadt+DE&sll=48.8053,11.7579

У меня были похожие проблемы при поиске в ограничивающей рамке. Кажется, что ограничивающая рамка полностью игнорируется, так как я все еще получаю данные о результатах, которые находятся на расстоянии ста километров:

q=pizza+Neustadt+DE&sll=48.8053,11.7579&sspn=0.00001,0.00001

Последний результат даже не в одном городе; разве крошечная ограничивающая рамка не должна приводить к каким-либо данным? Я мог даже передать BBox нулевого размера, и я все равно получил бы результаты.

Я знаю, что на самом деле есть довольно обширная документация для API Local Search, но в ней никогда не говорится о том, какие параметры используются, когда и как должен быть структурирован и оценен запрос, что затрудняет получение приличных результатов. .

Есть ли у вас какие-либо советы, подсказки, предложения о том, как справиться с локальным поиском Google?

UPDATE: Я просто нашел что-то действительно странное. Может ли кто-нибудь перейти на этот сайт:

http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html

открыть firebug и отслеживать HTTP-трафик при наборе в этом поисковом запросе:

test Rome Roma IT

Вы получите кучу результатов на карте. Теперь скопируйте URL, с которым связались через AJAX, и отправьте ему запрос в командной строке:

curl "http://www.google.com/uds/GlocalSearch?key=internal-sample&v=1.0&rsz=large&sll=41.97684819454683%2C12.486648559570312&sspn=0.204185%2C0.549316&q=test%20Rome%20Roma%20IT&lssrc=lsc&lscstyle=final&start=0&callback=_callbacks_._5g139yfuc"

Теперь я получаю нулевые результаты. Как это может быть? Это определенно не ключевые или аргументы обратного вызова, я удалил их без каких-либо изменений в результате этого запроса.

Расширяет ли Google свои результаты поиска, когда запрос поступает с одного из их серверов?

1 Ответ

2 голосов
/ 22 октября 2009

Я столкнулся с точно такой же проблемой, и, похоже, это связано с сочетанием проблем лицензирования и того факта, что то, что Google предоставляет через свои API, и то, что оно отображает на страницах поиска в Google / Google, - это сочетание разных поисков (поиск, карты, базы, данные и т. д.)

По вопросу лицензирования кажется, что Google может отображать больше информации, когда пользователь проходит через браузер, по сравнению с запросами через вызовы API (которые теоретически могут быть автоматизированы).

См. здесь , например.

...