SQL - 使用LIKE运算符搜索数据库

鉴于您的数据存储在数据库中的某个位置:
Hello my name is Tom I like dinosaurs to talk about SQL.  
SQL is amazing. I really like SQL.
我们希望实施网站搜索,允许访问者输入条款并返回相关记录。用户可能会搜索:
Dinosaurs
和SQL:
WHERE articleBody LIKE '%Dinosaurs%'
通过返回正确的记录集来处理问题。 但是,如果用户误入恐龙,我们将如何应对? IE:
Dinosores
(可怜的痛苦迪诺)。我们如何搜索允许拼写错误?我们可以将我们在搜索中看到的常见拼写错误与正确的拼写相关联,然后搜索原始字词+更正后的字词,但维护时间很长。 有什么办法编程吗? 编辑 出现SOUNDEX可能有所帮助,但任何人都可以使用soundex给我一个输入搜索词的例子:
Dinosores wrocks
返回记录而不是做:
WHERE articleBody LIKE '%Dinosaurs%' OR articleBody LIKE '%Wrocks%'
谁会回来squadoosh?     
已邀请:
如果您使用的是SQL Server,请查看SOUNDEX。 对于你的例子:
select SOUNDEX('Dinosaurs'), SOUNDEX('Dinosores')
返回相同的值(D526)。 您还可以使用DIFFERENCE函数(在与soundex相同的链接上)来比较相似度(4是最相似,0是最少)。
SELECT DIFFERENCE('Dinosaurs', 'Dinosores'); --returns 4
编辑: 在寻找一个多文本选项之后,看起来这并不是那么容易。我会把你推荐给@Neil Knight提供的关于Fuzzt Logic答案的链接(对我来说是+1,对我来说!)。 此stackoverflow文章还详细介绍了TSQL中模糊逻辑实现的可能来源。一旦响应者还概述了全文索引作为您可能想要调查的潜力。     
也许您的RDBMS具有
SOUNDEX
功能?你没有提到这里涉及哪一个。 SQL Server的
SOUNDEX
    
只是想在那里抛出替代品。如果SSIS是一个选项,那么您可以使用模糊查找。 SSIS模糊查找     
我不确定是否可以引入单独的“搜索引擎”,但如果您查看Google Search Appliance或Autonomy等产品,这些产品可以索引SQL数据库并提供更多搜索选项 - 例如,处理拼写错误也是如此作为同义词,搜索结果加权,替代搜索建议等。 此外,SQL Server的全文搜索功能可以配置为使用同义词库,这可能有助于: http://msdn.microsoft.com/en-us/library/ms142491.aspx 以下是设置同义词库以处理常见拼写错误的人的另一个问题: FORMSOF SQL Server中的同义词库     
简而言之,大多数SQL引擎都没有内置可以进行基于字典的“胖手指”修正的内容。 SoundEx确实可以作为一种工具来查找听起来相似的单词,从而纠正语音错误拼写,但如果用户输入“Dinosars”错过最后的U,或者真正“胖指”它并进入“Dinosayrs”,SoundEx会不返回完全匹配。 听起来你想要谷歌搜索的“你的意思是__?”特征。我可以告诉你,这并不像看起来那么简单。在10,000英尺的水平上,搜索引擎会查看每个关键字并查看它是否在已知“好”搜索词的“词典”中。如果不是,它使用类似于拼写检查器建议的算法来找到最接近匹配的字典单词(需要最少的字母替换,添加,删除和转置以将给定单词转换为字典单词)。这将需要一些繁重的过程代码,无论是在数据库中的存储过程或CLR Db函数中,还是在业务逻辑层中。     
您也可以尝试
SubString()
,消除前3个左右的字符。以下是如何实现这一目标的示例
SELECT Fname, Lname  
FROM Table1 ,Table2
WHERE substr(Table1.Fname, 1,3) || substr(Table1.Lname,1 ,3) = substr(Table2.Fname, 1,3) || substr(Table2.Lname, 1 , 3))
ORDER BY Table1.Fname;
    

要回复问题请先登录注册