我正在为我所在的项目开发一个CSV导入工具。
客户需要能够在Excel中输入数据,将其导出为CSV并上传到数据库。
例如,我有这条CSV记录:
"Acme Company"和"Acme Comapny"应该具有非常小的差异索引,但是 "Acme Company"和"Cmea Mpnyaco"应该具有非常大的差异索引, 或者"Acme Company"和"Acme Comp."也应该具有小的差异索引,即使字符数不同。 此外,"Acme Company"和"Company Acme"应返回0。
因此,如果客户在输入数据时出现错误,我可以提示他选择最可能要插入的名称。
是否有已知的算法可以实现此目的,或者我们可以发明一个算法 :)?
1, John Doe, ACME Comapny (the typo is on purpose)
当然,公司名称被放在一个单独的表中,并与外键链接,因此在插入之前我需要找到正确的公司ID。
我计划通过比较数据库中的公司名称和CSV中的公司名称来实现这一点。
如果字符串完全相同,则比较应该返回0,如果字符串不同则返回一个值,该值随着字符串差异的增加而变大。但是strcmp函数在这里无法胜任,因为:"Acme Company"和"Acme Comapny"应该具有非常小的差异索引,但是 "Acme Company"和"Cmea Mpnyaco"应该具有非常大的差异索引, 或者"Acme Company"和"Acme Comp."也应该具有小的差异索引,即使字符数不同。 此外,"Acme Company"和"Company Acme"应返回0。
因此,如果客户在输入数据时出现错误,我可以提示他选择最可能要插入的名称。
是否有已知的算法可以实现此目的,或者我们可以发明一个算法 :)?