我正在开发一个已建立的 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/