英国邮政地址匹配策略

时间:2015-12-03 13:46:11

标签: sql-server

我有2个英国邮政地址表(每个约300000行),需要将一个集合匹配到另一个集合,以便为每个地址返回第一组中包含的唯一ID。 问题是地址和拼写的格式有很多变化。 我写了很多t-sql脚本来挑选东部比赛(确切的邮政编码+门牌号码+街道名称等)但是有很多无法比拟的记录被证明难以处理。我可能最终拥有尽可能多的sql脚本! 我看看Levenstein的功能并逐字排名,但这些方法也不可靠且有问题。

有没有人有过做类似工作的经验,你的做法是什么?成功率?

谢谢!

1 个答案:

答案 0 :(得分:1)

我同意评论者的意见,这主要是商业规则而不是编程问题,但是它的价值是什么......

多年前我的目录有点类似问题。参赛作品并不总是以我们希望的方式保持一致,不同的版本奇怪地出现并且有各种各样的变化。所有这些都必须联系起来。

我最后做的是模糊匹配器。将项目分解为组件。我尽可能地将数据标准化 - 从并不总是拥有它们的字段中删除空格,例如可以没有它们。计算出了近距离失误之间的距离 - 例如,酒吧与汽车之间的距离为1。我用词干 - 请参阅http://snowball.tartarus.org/algorithms/english/stemmer.html了解更多信息。我想我甚至玩过SQL Server的SOUNDEX匹配。

然后我通过编写了这份工作来编写候选匹配列表。高于某一级别的任何内容都会呈现给管理员,管理员会看到该程序认为最佳匹配以及其他可能的匹配。他们挑选了一个看起来最好的,勾选它并继续下一个。

在列表的开头,每个人都认为这项工作太过庞大,无法管理。然后他们开始通过它,发现它比他们想象的要快得多,并且比他们担心在新数据出现时更加容易。

以编程方式完成所有操作的脚本将永远不会完美,并且最终会与源列表一样长,并且会产生尽可能多的异议。不要试图完美地自动化它;自动化简单的东西,把人放在循环中以应对不确定的情况。更容易和更安全。

相关问题