小编典典

词比较算法

algorithm

我正在为正在处理的项目执行CSV导入工具。客户端需要能够在excel中输入数据,将其导出为CSV并将其上传到数据库。例如,我有以下CSV记录:

   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公司”和“公司Acme”应返回0。

因此,如果客户在输入数据时进行输入,我可以提示他选择他最想插入的名称。

有没有一种已知的算法可以做到这一点,或者我们可以发明一个:)吗?


阅读 159

收藏
2020-07-28

共1个答案

小编典典

您可能需要检查Levenshtein距离算法作为起点。它将评定两个单词之间的“距离”。

该SO线程实现了Google风格的“您是说…?” 系统可能也会提供一些想法。

2020-07-28