2009-10-22 51 views
3

目前我對Google的AJAX API有點頭痛。我所做的是將結構化的位置數據轉換爲Google本地搜索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地圖上搜索「term Rome Roma IT」,則會按預期在羅馬找到所有條款。如果我在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有一個非常廣泛的文檔,但它從來沒有詳細說明哪些參數用於何時以及如何對查詢進行結構化和評估,這使得很難得到體面的結果。

您是否有任何提示,提示,建議如何掌握Google本地搜索?

更新: 我剛剛發現了一些非常奇怪的東西。可能有人請去這個網站:

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

打開Firebug,並監控HTTP流量在這個搜索查詢打字時:

test Rome Roma IT 

你會得到一堆在地圖上的結果。現在,複製這是通過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" 

現在,我得到結果爲零。這怎麼可能?這絕對不是關鍵或回調參數,我刪除了它們,而沒有改變該查詢的結果。

谷歌是否在查詢來自其中一臺服務器時擴展其搜索結果?

回答

2

我遇到了完全相同的問題,它似乎歸結爲許可問題,以及Google通過其API公開的內容以及Google地圖/ Google搜索頁中顯示的內容是不同的組合搜索(搜索,地圖,基地,數據等等)

在許可問題上,似乎Google可以在用戶通過瀏覽器訪問時顯示更多信息,與通過API調用的請求相比(可以理論上是自動的)。

例如參見here

+0

感謝您的指針。任何關於被忽略的bbox參數的想法? – Matthias 2009-10-22 08:37:51

+0

我提供了sll參數或地址元素作爲「q」項的一部分,但不是兩者都在一起。 – davek 2009-10-22 08:39:34

+0

我剛剛用另一個非常奇怪的觀察來更新我的問題。你能證實嗎?謝謝戴夫。 – Matthias 2009-10-22 09:00:07

相關問題