php - 拼写检查街道地址的最佳方法是什么?

标签 php mysql levenshtein-distance

将新地址导入我的数据库时,我会进行拼写检查以查看该街道是否已经存在(新街道只是拼写错误)。

我们目前在 MySQL 查询中使用 Levenshtein 方法来查找相似的街道名称。问题是街道号码。地址中包含街道号码确实会减慢相似性搜索/拼写检查的速度。

例子:

Street abc 34
Street abc 37
Street abc 39

这些街道名称拼写正确,但 Levenshtein 方法认为它们拼写错误,因为街道编号。

我们开发了一个 PHP 函数,它可以获取第一个数字之后(包括)的所有内容并将其放入另一列。

这适用于门牌号在末尾的街道,但不适用于门牌号在开头的国家/地区。

我想知道是否还有其他人处理过类似的问题?

更新
该解决方案适用于商店定位器网站,我目前正在研究将导入商店列表的模块。

一种解决方案是使用 Google Maps API 并查看它是否返回地理地址。

最佳答案

呃,通用地址是一个极其困难的问题。我的建议是执行您可以容忍的最少数量的验证。

例如,如果这是出于运输目的,则只需使用下拉列表来确定运输成本等内容。如果您对不同的国家/地区有不同的运费,只需提供一个没有验证的自由格式文本区域和一个国家/地区下拉列表。如果用户无法拼写他们的地址,那就倒霉了。您可以让任何处理运输的人“人工”验证地址。 express 公司和邮政公司大多可以将包裹运送到拼写错误的地址(无论如何,Randomcountry 的邮政公司可能比您更了解他们的街道名称)。

如果您确实需要精确地址,请尝试为此寻找第三方解决方案。使用 Google Maps API 可能会奏效,并且有针对此问题的付费解决方案。

不过,考虑到您的算法,我想到了以下解决方案;只需使用正则表达式去除数字(甚至非字母)。但是,请记住,正确的街道名称是 数字(即纽约的第 9 大道)。

关于php - 拼写检查街道地址的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8255804/

相关文章:

javascript - 将 JavaScript 中的值集成到 HTML 表单中以将其发布到 php 中

c++ - 运行Levenstein代码时出现问题

php - 如何有效地识别大型数据集中相似但不相同的字符串?

python - 与 python 列表中的项目的 levenshtein 距离

php - Chrome 在下载时无法识别 url 编码的文件名

php - 无法从 Plupload 获取 JSON 数据

php - 设计表单处理以支持支持 AJAX 的浏览器和非 AJAX 浏览器的最简洁的方法是什么?

MySQL 查询选择每天有多个条目的所有用户

mysql - 强制更改/重置 mysql 密码?

php - 使用准备好的语句删除带有 PDO 和复选框的多行?