0

我正在开发一个允许在同一个城市搜索人的功能。

由于我不期待使用地理位置,我让用户输入他们的城市。因此,为了让人们找到彼此,他们需要输入相同的城市名称。

现在,我正在使用区分大小写的数据库,因此字符串需要匹配,所以我想有一个简化过程,如下所示:

- user inputs city "New York"
  ->new york
  ->newyork

接下来我期待做的是确保输入“new yprk”作为拼写错误的人仍然能够找到彼此。

我不想重新发明轮子,所以,是否有一个脚本,你知道那种“散列”单词,以便稍微不同的单词算作相同?

提前致谢。

4

2 回答 2

0

不幸的是,没有地理位置就无法做到这一点,因为城市是名称,如果这些是任意的英语单词,您可以使用某种拼写检查库来生成匹配并运行固定查询,但由于这些是城市,您需要地理位置数据库。

现在有一种潜在的解决方法是使用世界城市数据库作为拼写检查库的字典,但我不确定它的准确性如何。如果您不希望有大量流量,请使用谷歌免费层地理编码,或者这是一个免费的替代方案:

http://wiki.openstreetmap.org/wiki/Nominatim#Reverse%5FGeocoding%5F.2F%5FAddress%5Flookup

如果没有某种字典或第 3 方服务,就无法猜测名称。其他方法包括使用谷歌预测 API 并使用所有城市名称加载它,但当然这也是第 3 方......

于 2013-02-28T19:40:13.030 回答
0

不,因为像那样聪明会带来很多误报。你为什么不再次检查你的城市已知城市列表,如果它存在继续,否则会引发错误

http://www.maxmind.com/en/worldcities

一个

于 2013-02-28T19:35:44.533 回答