首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高用于模糊字符串匹配的SQL Soundex的容错能力

提高用于模糊字符串匹配的SQL Soundex的容错能力
EN

Stack Overflow用户
提问于 2014-09-16 08:17:36
回答 1查看 588关注 0票数 0

是否有办法提高SQL SOUNDEX函数用于模糊字符串匹配时的容错能力?我用这个来寻找供应商的名字。我拥有的是:

代码语言:javascript
复制
WHERE
    SOUNDEX(@SearchTerm) = SOUNDEX(s.Name)

这在某种程度上是可行的,但我想稍微提高一下容错能力。例如:

代码语言:javascript
复制
SOUNDEX('test') = T230
SOUNDEX('tet') = T300
SOUNDEX('tets') = T320
SOUNDEX('tes') = T200

理想情况下,我希望所有这些例子都匹配。此外,一个轻微的问题是,当供应商名称由2个单词组成,用户按第二个单词进行搜索时,这显然会起作用,因为行进取决于单词的第一个字母:

代码语言:javascript
复制
SOUNDEX('test supplier') = T230
SOUNDEX('supplier') = S146

最初,我在web应用程序中使用了一个使用各种近似字符串比较算法的模糊字符串比较库,但事实证明,当20人同时搜索5000+供应商时,web服务器处理的太多了。我现在尝试在存储过程中这样做,以便数据库只返回搜索的结果,而不返回要搜索的供应商的完整列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-16 08:39:46

您可以实现一个UDF,并使用SQL集成在服务器中部署它。(更详细地说:CLR标量函数)

我可以保证这是有效的,因为我正在做同样的事情,查看超过350.000行(没有任何其他过滤器),它工作得非常快。它是Damerau-Leventshein算法的一个变种,因此是一种耗时的算法.

将所有行返回到应用程序,并在应用程序端对其进行过滤,与在Server中直接进行筛选有很大的区别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25863806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档