当我知道字符串的正确拼写和历史拼写错误时,levenshtein distance是工作的最佳工具吗?



我有两个表

每个当前员工都有一个条目,并包含每个用户的正确拼写。在给定的时间内,只有80名员工,但名字本身会定期更改。

它看起来有点像这样:

EmployeeID12341235

它成为了一种设计选择,无论是在模式中还是在UI中。

  • 谁将管理名称Alias数据?
  • 是否有一个用户体验来澄清当一个独特的匹配不能确定?
  • 有多少不同的进程需要使用Alias?
  • Alias查找要使用的频率是多少?
  • 你需要多大程度的确定性,数据有多重要?

如果您希望用户能够管理已知的Alias或常见的拼写错误,请务必创建一个允许用户(或管理员)管理查找的表(或数组)。

这也归结为场景。如果你需要频繁导入数据,那么你需要一个明确的数据源来匹配,以给你信心,你的过程将工作。

在此场景中,我将根据每个名称的映射Alias值验证输入,如果无法识别唯一的名称,则失败输入,直到找到唯一的结果,这将迫使DBA、Admin或用户相应地更新Alias列表。

如果这种情况很少发生,那么在首先解析和修改输入的脚本中管理它可能更简单,而不是将其构建到模式中。然后,当员工列表发生更改或出现新的拼写错误时,您或执行输入的DBA可以管理脚本。

注意不要像这样过度设计解决方案。Levenshtein非常适合根据搜索参数对用户列表进行排序,以帮助用户找到某人,但由于国际化、多元文化以及人们的一般古怪选择,冲突的名称数量或返回错误匹配的数量可能是不可接受的。

最新更新