我有一个公司数据库.我的应用程序接收按名称引用公司的数据,但名称可能与数据库中的值不完全匹配.我需要将传入的数据与它所引用的公司进行匹配.
例如,我的数据库可能包含名为“A. B. Widgets& Co Ltd.”的公司.而我的传入数据可能会引用“AB Widgets Limited”,“A.B.Widgets and Co”或“A B Widgets”.
公司名称中的某些单词(A B Widgets)对于匹配比其他单词(Co,Ltd,Inc等)更重要.避免错误匹配很重要.
公司的数量足够小,我可以在内存中维护他们的名字地图,即.我可以选择使用Java而不是sql来查找正确的名称.
你会如何用Java做到这一点?
解决方法
您可以在DB / map& amp;中尽可能地标准化格式.输入(即转换为大写/小写),然后使用动态编程中的
Levenshtein (edit) distance metric来根据所有已知名称对输入进行评分.
然后,您可以让用户确认匹配&如果他们不喜欢它,给他们选择将这个值输入你的已知名字列表(第二个想法 – 这可能是给用户太多的力量……)