我目前正在为 Google 的 AJAX API 丢掉一些头发。我所做的是将结构化的位置数据转换为 Google 本地搜索 API 查询,以便为用户提供替代的地点结果列表。
前任。:
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 地图上搜索“术语 Rome Roma IT”,它会按预期找到罗马的所有术语。如果我在 API 上重复相同的搜索,我得到的结果为零(我必须删除“罗马”或“罗马”才能工作——罗马是这里的行政区域,罗马是城市名称)。
这是为什么?
另一个例子。德国有大约 20 个不同的城镇、城市和自治市镇,称为 Neustadt。现在,当我在谷歌地图上搜索时,它只会找到一个,除非我指定一个额外的限定符,比如一个地区或其他东西。
现在,在 API 级别上,我有点期望在传递纬度/经度参数以及对 Neustadt 的查询时,通过查看地理编码来选择正确的 Neustadt 就足够聪明了。但这不会发生,它总是选择同一个 Neustadt 并忽略地理数据。
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 实际上有一个相当广泛的文档,但它从未详细说明何时以及如何构建和评估查询,这使得获得体面的结果变得非常困难。
您对如何掌握 Google 本地搜索有任何提示、技巧和建议吗?
更新: 我刚刚发现了一些非常奇怪的东西。有人可以去这个网站吗:
http://code.google.com/apis/ajaxsearch/documentation/localsearch/index.html
打开 firebug,并在输入此搜索查询时监控 HTTP 流量:
test Rome Roma IT
你会在地图上得到一堆结果。现在复制通过 AJAX 联系的 URL,并在命令行上向它发送请求:
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"
现在我得到零结果。怎么可能?这绝对不是键或回调参数,我删除了它们而对该查询的结果没有任何改变。
当查询来自他们的一台服务器时,谷歌是否会扩展他们的搜索结果?