我正在为我正在处理的项目做一个CSV导入工具。 客户端需要能够在Excel中输入数据,将它们导出为CSV并将其上传到数据库。 例如,我有这个CSV记录:字比较算法
1, John Doe, ACME Comapny (the typo is on purpose)
当然,这两家公司都保存在一个单独的表,并与外键链接,所以我需要在插入之前发现正确的公司ID。 我打算通过将数据库中的公司名称与CSV中的公司名称进行比较来实现此目的。 如果字符串完全相同,则比较应返回0,并且返回某些值随着字符串变得更加不同而返回更大值,但strcmp不会在此处将其切换,因为:
“Acme Company”和“Acme Comapny “应该有一个非常小的差异指数,但 ”Acme公司“和”Cmea Mpnyaco“应该有非常大的差异指数 或”Acme公司“和”Acme Comp。“。即使字符数不同,也应该有一个很小的差异指数。 此外,“Acme公司”和“公司Acme”应返回0.
因此,如果客户端在输入数据时输入类型,我可以提示他选择他最想插入的名称。
有没有一个已知的算法来做到这一点,或者我们可以发明一个:) ?
对于库:http://stackoverflow.com/questions/83777/are-there-any-fuzzy-search-or-string-similarity-functions-libraries-written-for – nawfal 2013-06-06 05:25:11