在SQL Server上逐字使用SOUNDEX()

Cha*_*les 6 sql sql-server soundex

这是我的问题.比如我有一个表的产品包含一个字段,名称:

Products
ID | Name | ..
1  | "USB Key 10Go"
2  | "Intel computer"
3  | "12 inches laptop computer"
...
Run Code Online (Sandbox Code Playgroud)

我目前正在为iPhone网络应用程序实现一个简单的搜索引擎(SQL Server和ASP .NET,C#),我想使用SOUNDEX()SQL Server功能.

问题是,我不能直接SOUNDEXName字段上使用.(这是无关紧要的,因为名称中有几个单词.)我想将该SOUNDEX函数应用于Name字段中的每个单词,然后查看它们是否与researched关键字匹配.

如果有人知道如何做到这一点,那将是非常棒的.

Bob*_*ica 5

而不是使用Soundex你可能会更好地计算两个字符串之间的Levenshtein距离.请参阅维基百科关于Levenshtein距离的文章.

有一个TSQL实现Levenshtein距离算法在这里.

分享和享受.


编辑03-May-2012

自从编写我的原始响应以来,我已经了解到Oracle在UTL_MATCH包中包含了Levenshtein距离和其他几个"字符串相似性"函数,我认为这是数据库的标准部分.文档在这里.也许与原始帖子(适用于SQL Server)没有直接关系,但可能很有用,因为许多商店使用多个数据库.


Gab*_*ams 4

您研究过 SQL Server 中的全文搜索功能吗?我知道这并不完全是您所要求的。只是 SOUNDEX() 函数用于查找相似的 SOUNDING 名称(例如:SMITH 和 SMYTHE 听起来相同)。然而,在搜索引擎中,单词的发音不如搜索单词本身重要。全文搜索还允许您使用同义词(允许您指定在应用程序上下文中表示相同含义的某些单词),并在搜索过程中自动考虑它们。

有关 SQL Server 中的全文搜索的更多信息,请参阅以下页面:

全文搜索简介

包含

包含稳定

自由文本

自由文本表