2010-03-24 85 views
2

難以找出最好的方法來做到這一點...php/mysql將狀態添加到城市

我有一個搜索功能,需要「搜索條件」和「搜索位置」。在位置輸入中,我有一個提示「城市,州縮寫」的建議功能,但似乎有些用戶不使用它(或不能),所以他們最終只輸入一個城市名稱......我需要在表單提交後附加狀態縮寫。我在美國有一個包含所有城市和州名的表格,但問題是......在不同州有多個同名的城市......我想添加州最簡單的州名受歡迎的(這是否有道理?)。

例如,如果用戶輸入「邁阿密」我想它成爲「邁阿密,佛羅里達州」,而不是「邁阿密,WV」 ......

任何想法?

謝謝!

回答

1

您可能需要考慮「城市人口」與「普遍人氣」之間的相關性。

因此,一個簡單的選擇可能是收集每個城市的人口,將其存儲在數據庫中,並且如果使用需要消除歧義的城市名稱,則可以選擇人口最多的城市名稱。

以下維基百科文章中的參考文獻可能會有用:List of US cities by population


谷歌地圖解決disambiguations以類似的方式,即使權重可能會有所不同:

http://maps.google.com/?q=Miami

http://maps.google.com/?q=Miami,WV

我曾經以爲谷歌地圖也需要在解決此類問題時考慮到當前的視口,而是尋找邁阿密的wh wh e放大到西弗吉尼亞州仍然帶你到佛羅里達州。

1

我想補充一下這個城市最受歡迎的州的州名縮寫(這是否合理?)。

沒有。這絕對沒有意義。如果有人是來自邁阿密WV的

我想你會強制用戶選擇一個狀態,或輸入一個郵政編碼,可以幫助你找出以後的狀態。無論如何這不會有意義嗎?沒有郵政編碼,地址不會變得毫無價值嗎?

+0

嗯......我想我可以添加一個「沒有你意思?」爲較不「流行」的國家。此外,大部分數據都基於大城市。有很多網站都這樣做,以及...... – mike 2010-03-25 01:05:40

+0

@Mike我首先對你有不同的理解,我以爲你想在用戶通過城市的知名度進入它之後確定確切的城市*。 – 2010-03-25 01:16:05

1

您可能需要在城市和州名稱表中存在加權值 - 然後針對城市/州名稱表運行查詢以選擇具有匹配的城市名稱和最高權重值的行,然後返回州名。

一個更好的選擇,但是,很可能會運行一個查詢,抓住可能的狀態所有,然後詢問用戶哪一個是正確的 - 最好是使用AJAX他們之前提示他們繼續與形式;但即使只是一個後續頁面也可以工作。試圖在這種情況下自動填寫狀態可能會導致用戶偶然意識到這個不太流行的城市版本的混亂。

+0

同上:)你先到那裏;) – Darbio 2010-03-24 23:09:58

1

在城市表中爲您的每個城市分配一個流行度權重,然後在執行您的select語句時根據流行程度權重進行排序。

或者允許用戶選擇他們的意思是其中之一後,便輸入城市...這一定會是最好的主意...