我有一个简单的联系人数据库,但用户输入重复数据时遇到问题。我已经实现了一个简单的数据比较,但不幸的是,输入的重复数据并不完全相同。例如,姓名拼写错误,或者一个人输入“Bill Smith”,另一个人输入“William Smith”,表示同一个人。
那么是否有某种算法可以给出一个条目与另一个条目的相似程度的百分比?
那么是否有某种算法
可以给出一个百分比
一个条目与另一个条目相似?
Soundex 和编辑距离等算法(如上一篇文章中所建议的)可以解决您的一些问题。但是,如果您认真清理数据,这还不够。正如其他人所说,“Bill”听起来一点也不像“William”。
我发现的最佳解决方案是使用缩减算法和表将名称缩减为其根名称。
在常规地址表中,添加名称的根版本,例如
人(名字、根名字、姓氏、根姓......)
现在,创建一个映射表。
FirstNameMappings(主键名字,根名称)
通过以下方式填充您的映射表:
将 IGNORE(从 Person 中选择 Firstname、“UNDEFINED”)插入 FirstNameMappings
这将添加您的人员表中的所有名字以及“UNDEFINED”的根名称
现在,遗憾的是,您将必须遍历所有唯一的名字并将它们映射到 RootName。例如“Bill”、“Bill”和“Will”都应翻译为“William”
这非常耗时,但如果数据质量对您来说确实很重要,我认为这是最好的方法之一。
现在,使用新创建的映射表来更新 Person 表中的“Rootfirstname”字段。对姓氏和地址重复上述步骤。完成此操作后,您应该能够检测重复项而不会出现拼写错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)