2013-04-25 80 views
0

我有业务需求,我们需要做的somce疯狂的名称匹配与存储在数据库中的记录,我想知道是否有任何简单的方法使用SQL Server来做到这一点。SQL Server文本搜索

在数据库中存储的名称:奥斯汀ķ 名称从UI匹配:克兰德奥斯汀

这只是一个样本。实际上,可能有很多不同的排列和组合。

如果是倒过来,我本可以用狂野性格,但在这种情况下,数据库名称是比搜索标准较小。

有什么建议吗?

+1

有点小心[Falsehoods程序员相信姓名](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)。 – minopret 2013-04-25 17:05:02

回答

0

现实 - 没有。数据库旨在比较绝对值,而不是混淆比较。他们在内部存储数据的方式不适合真正混乱的匹配。实际上,即使像Google这样的功能强大的专用搜索引擎,如果没有先前的知识,也不能在您的示例中使用混乱的匹配功能。

我不知道这个要求是如何精确地写出来的,但是我要么用“技术上不可能”拍摄功能请求,要么执行一个规则集,尝试使用凌乱的匹配 - 例如,您可以轻松地'硬编码'表示在输入大写字时执行多个搜索,将它们缩短为单个字母。不知道这是否是解决问题的方法。

0

你可以使用LIKE运算符,它决定一个特定的字符串是否与指定的模式相匹配的正常搜索。您遇到的问题是多个记录或不正确的人返回的概率。对于商业应用程序,我自己也有类似的要求,解决问题的最佳方法是要求其他符合条件的值,而不仅仅是名称。如果您在没有其他合格数据的情况下进行部分名称搜索,您肯定会遇到错误肯定匹配和/或多条记录。在我的情况下,我建立了一个网络服务,检查资格允许文本搜索的第一个&姓氏,但也添加了出生日期,主要人员SSN和性别,以确保匹配的人是在该人打算搜索的契据。如果我的情况与您的名称是唯一的搜索条件一样,我向企业推荐的是我们无法执行搜索,直到将合格数据输入到数据库中,否则没有准确的方法来查询他们正在查找的结果。