php - 如何比较不同格式的地址(php/mysql)

标签 php mysql comparison

我正在开发一个已建立的 php mysql 网络应用程序,其中包含一些相当大的数据。

作为数据管理例程的一部分,有关地址的新数据从两个不同的来源添加到数据库(导入)。

此数据中的所有地址均来自英国。

应用程序已使用 addressRecord.address1 = address1 AND addressRecord.postcode = postcode 作为插入新地址或将记录与现有地址相关联之前的冲突检测。

麻烦的是碰撞测试没有定论。由于两种不同的数据源提供了不同的地址格式。

来源 1

    address1 = 'FLAT N, RICHMOND HILL GATE, 1'

    address2 = 'RICHMOND HILL DRIVE'

    address3 = 'BOURNEMOUTH'

    postcode = 'BH2 6LT'

来源 2

    address1 = 'Flat N'

    address2 = 'Richmond Hill Gate'

    address3 = '1 Richmond Hill Drive'

    postcode = 'BH2 6LT'

因为这是一个已建立的应用程序,所以地址表中已经存在这个重复项,我必须处理它,而且新数据不断导入并且必须与地址记录相关。

所以我正在寻找一种决定性的(几乎是决定性的)方法来比较格式略有不同的地址,这也是高性能的(10 的数百万行数据)。

到目前为止,我已经考虑计算一个标识字段,它可以扩充到现有数据,并为新导入计算,例如可能是 3 个地址字段连接,删除所有标点符号,或者可能只是数字.或...感谢收到的任何想法。

最佳答案

您必须将所有地址转换为规范化的地址格式,如@chris 所说。我认为您无法在数据库中“即时”执行此操作。您将依赖代码来执行此操作并将结果存储在数据库中。您遇到的最大问题是您拥有的数据缺少完整性:带或不带邮政编码的相同地址;邮政编码相同但街道名称或城市不同的地址;具有不同邮政编码的相同地址;写法不同的街道名称,“W Churchill Ln”与“Winston Churchill Lane”。您将需要模糊逻辑来让计算机决定什么是正确的。 来自各种来源的数据在每个来源的格式方面可能是一致的,您可能会以某种方式从中受益。另一件事是,一个来源将比其他来源更可靠,您也可以利用这一优势。

关于php - 如何比较不同格式的地址(php/mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20359288/

相关文章:

c# - C# 和 VB.NET 之间最重要的功能区别是什么?

php - 正则表达式 - 从 PHP 中的 html 字符串获取表格

php - 来自一个表的 SQL COUNT,其中另一表的条件为 true

mysql - 选择查询以获取每个 post_id 的标签

java,从多个数组中获取最高值

javascript - 比较对象数组并删除特定项目

PHP cURL 无法正常工作且未显示任何错误

php - 管理页面访问

php - 根据条件将一个关联数组中的值添加到另一个关联数组中

php - 打印数据库中的所有表