Php 最好的拼写检查街道地址的方法是什么?

Php 最好的拼写检查街道地址的方法是什么?,php,mysql,levenshtein-distance,Php,Mysql,Levenshtein Distance,将新地址导入数据库时,我会进行拼写检查,查看街道是否已经存在(新街道只是拼写错误) 我们目前正在MySQL查询中使用Levenshtein方法来查找类似的街道名称。问题是街道号码。地址中有街道号码确实会减慢相似性搜索/拼写检查的速度 例如: abc街34号 abc街37号 abc街39号 这些街道名称拼写正确,但Levenshtein方法认为,由于街道编号的原因,这些街道名称拼写错误 我们已经开发了一个PHP函数,它在第一个数字之后(包括第一个数字)接受任何内容,并将其放在另一列中 这适用于末尾

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

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

例如:

abc街34号
abc街37号
abc街39号

这些街道名称拼写正确,但Levenshtein方法认为,由于街道编号的原因,这些街道名称拼写错误

我们已经开发了一个PHP函数,它在第一个数字之后(包括第一个数字)接受任何内容,并将其放在另一列中

这适用于末尾有街道编号的街道,但不适用于开头有街道编号的国家

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

更新
该解决方案适用于商店定位器网站,我目前正在开发一个模块,该模块将导入商店列表


一种解决方案是使用谷歌地图API,看看它是否返回地理地址。

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

例如,如果这是为了运输目的,只需使用下拉列表来确定运输成本。如果您在不同的国家/地区有不同的运输成本,只需提供一个没有验证的自由格式文本区域和国家/地区下拉列表。如果用户不能拼写他们的地址,那就倒霉了。你可以让负责发货的人“人道地”核实地址。投递公司和邮政公司大多可以将包裹投递到拼写错误的地址(无论如何,中国的邮政公司可能比你更了解他们的街道名称)

如果您真的需要精确的地址,请尝试为此找到第三方解决方案。使用GoogleMapsAPI可能会起作用,而且有付费的解决方案


考虑到你的算法,下面的解决方案浮现在脑海中;只需使用正则表达式来去除数字(甚至非字母)。但是,请记住,有一些正确的街道名称是数字(即纽约的第九大道)。

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

例如,如果这是为了运输目的,只需使用下拉列表来确定运输成本。如果您在不同的国家/地区有不同的运输成本,只需提供一个没有验证的自由格式文本区域和国家/地区下拉列表。如果用户不能拼写他们的地址,那就倒霉了。你可以让负责发货的人“人道地”核实地址。投递公司和邮政公司大多可以将包裹投递到拼写错误的地址(无论如何,中国的邮政公司可能比你更了解他们的街道名称)

如果您真的需要精确的地址,请尝试为此找到第三方解决方案。使用GoogleMapsAPI可能会起作用,而且有付费的解决方案


考虑到你的算法,下面的解决方案浮现在脑海中;只需使用正则表达式来去除数字(甚至非字母)。但是,请记住,有一些正确的街道名称是数字(即纽约第九大道)。

这是一个非常常见的问题。例如,可以有多个地址,这些地址都表示相同的物理位置,但结构不同。例如:

北250西100 北纬100度250W 北纬100度250瓦 100N 250西 北纬100度西经250度 北250西100

根据美国邮政服务,标准化地址为100N 250W。只有将每个地址解析为标准格式,您才能准确地删除重复地址,并确保结果一致

如果没有额外的上下文,地址很难标准化。我指的是该国所有有效/可交付地址的最新主列表。这实际上不是以列表格式提供的(它将是巨大的),但可以作为API访问。美国邮政服务提供他们的API,还有其他公司采用USPS数据并通过他们自己的API进行增强。这些增强功能通常是更快的服务和有保证的正常运行时间,以及额外的地址处理功能和更多关于地址的返回数据

因此,在快速回答中,对街道地址进行拼写检查的最佳方法是使用API验证完整地址


为了充分披露,我是公司的创始人,我们处理验证问题。如果您是非营利组织,您可以免费使用我们的服务。有好几家地址验证公司——只要在谷歌上搜索“地址验证”,你就会发现很多。这是一个非常常见的问题。例如,可以有多个地址,这些地址都表示相同的物理位置,但结构不同。例如:

北250西100 北纬100度250W 北纬100度250瓦 100N 250西 北纬100度西经250度 北250西100

根据美国邮政服务,标准化地址为100N 250W。只有将每个地址解析为标准格式,您才能准确地删除重复地址,并确保结果一致

如果没有额外的上下文,地址很难标准化。我指的是该国所有有效/可交付地址的最新主列表。这实际上不是以列表格式提供的(它将是巨大的),但可以作为API访问。美国邮政服务提供了他们的API,还有其他公司采用USPS数据并增强