3

我目前正在为 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"

现在我得到零结果。怎么可能?这绝对不是键或回调参数,我删除了它们而对该查询的结果没有任何改变。

当查询来自他们的一台服务器时,谷歌是否会扩展他们的搜索结果?

4

1 回答 1

2

我遇到了完全相同的问题,它似乎归结为许可问题的组合以及 Google 通过其 API 公开的内容以及它在地图/Google 搜索页面中显示的内容是不同搜索的组合(搜索、地图,基地,数据等)

在许可问题上,与通过 API 调用(理论上可以自动化)的请求相比,谷歌似乎可以在用户通过浏览器时显示更多信息。

例如,请参见此处

于 2009-10-22T08:06:58.077 回答