2010-03-24 43 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语句时根据流行程度权重进行排序。

或者允许用户选择他们的意思是其中之一后,便输入城市...这一定会是最好的主意...