我正在开发一个已建立的php mysql Web应用程序,其中包含一些相当大的数据。
作为数据管理例程的一部分,地址的新数据将从两个不同的来源添加到数据库(导入)。
此数据中的所有地址均来自英国。
在插入新地址或将记录与现有地址相关联之前,应用程序已使用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'
因为这是一个已建立的应用程序,这个复制已经存在于地址表中,我必须处理,但是新数据也会不断导入,并且必须与地址记录相关。
所以我正在寻找一种结论(几乎是决定性的可能)的方法来比较格式略有不同的地址,这也是高性能的(数百万行数据)。
到目前为止,我已经考虑过计算一个识别字段,可以对现有数据进行扩充,并为新导入进行计算,例如可以连接3个地址字段,删除所有标点,或者只是数字。或者...感激地收到任何想法。
答案 0 :(得分:1)
你必须将所有地址转换为标准化的地址格式,如@chris所说。我认为您无法在数据库中“即时”执行此操作。您将依赖于代码来执行此操作并将结果存储在数据库中。您遇到的最大问题是您拥有的数据缺少完整性:带或不带邮政编码的相同地址;具有相同邮政编码但具有不同街道名称或城市的地址;具有不同邮政编码的相同地址;街道名称的写法不同,'W Churchill Ln'与'Winston Churchill Lane'。你需要模糊逻辑让计算机决定什么是正确的。 来自各种来源的数据在每个源的格式设置中可能是一致的,您可能会以某种方式从中获益。另一方面,一个来源比其他来源更可靠,你也可以利用这个来源。