超级暧昧的名字查?我正在研究一些内部CRM的东西。公司当前的前端允许大量重复。我试图阻止最终用户输入同一个人,因为他们搜索的是“BillJohnson”,而不是“WilliamJohnson”。所以用户会提供一些关于他们新客户的信息,我们会找到相似的名字(包括模棱两可的名字)并将它们与我们数据库中已有的名字相匹配,并询问它们是否意味着那些东西......是的,这样的数据库是否仍然存在技术上?我在一个网站上实现了这样的功能。我在PHP中使用double_metaphone()+levenstein()。我为dabatase中的每个条目预先计算了一个double_metaphone(),我将其用于对“变音”搜索词的前x个字符进行SELECT查找。然后,我根据Levenstein距离对返回的结果进行排序。double_metaphone()不是任何PHP库的一部分(上次我检查过),所以我借用了很久以前在网上找到的PHP实现(网站不再在线)。我应该把它贴在我想的地方。编辑:该站点仍在archive.org上:http://web.archive.org/web/20080728063208/http://swoodbridge.com/DoubleMetaPhone/或GoogleCache:http://webcache.googleusercontent.com/search?q=cache:Tr9taWl9hMIJ:swoodbridge.com/DoubleMetaPhone/+Stephen+Woodbridge+double_metaphon这导致许多其他有用的链接与double_metaphone()的源代码,包括github上的Javascript:http://github.com/maritz/js-double-metaphone编辑:通过我的旧代码,为了清楚起见,这里是我所做的大致步骤,伪代码:1)为数据库中的每个单词预计算double_metaphone(),即$word='blahblah';$soundslike=double_metaphone($word);2)查找时,$word对数据库进行模糊搜索:$soundslike=double_metaphone($word)4)SELECT*FROMtableWHEREsoundlikeLIKE$soundlike(如果存储levenstein程序,那就更好了:SELECT*FROMtableWHERElevenstein(soundlike,$soundlike)word,$word)ASCLIMIT。...等等。它对我来说很好用,尽管我不能使用存储过程,因为我不控制服务器并且它使用的是MySQL4.20等。我曾经问过类似的问题。NameHypocorismlist我从来没有用过它,但在工作中问题又出现了,所以我可能会在.net中编写并开源一个库来做一些匹配。更新:我将我在那里提到的perl模块移植到C#并将其放在github上。http://github.com/stimms/Nicknames实现Levenshtein距离:http://en.wikipedia.org/wiki/Levenshtein_distance这可以写成SQL函数并以多种不同的方式查询。好吧,SSIS有一些模糊逻辑任务,我们可以使用这些任务在事后查找重复项。我认为您需要让您的逻辑看起来不仅仅是名称以获得最佳结果。如果他们输入地址、电子邮件或电话信息,也许您可??以查找具有相同姓氏且与一个或多个其他人相匹配的人,然后询问其中一位是否愿意这样做。您还可以为各种名称制作一个昵称表并匹配它们。你不会得到所有的,但你至少可以得到一些在你的国家最常见的。您可以对相似的声音名称使用SOUNDEX。然而,这对威廉和比尔来说并不合适。以SQL为例来试试。SELECTSOUNDEX('John'),SOUNDEX('Jon')SQLServer中有一些内置的SOUNDSLIKE函数,见SOUNDEXhttp://msdn.microsoft.com/en-us/library/aa259235%28SQL.80%29.aspx至于完整/昵称搜索,据我所知没有任何内置的东西。昵称因地区而异,并且有很多信息需要跟踪。可能有一个数据库将全名与您可以在自己的应用程序中使用的昵称相关联。以上就是C#学习教程:超模糊名字校验?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
