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

Tom*_*len 8 sql spelling sql-like

鉴于您的数据存储在数据库中的某个位置:

Hello my name is Tom I like dinosaurs to talk about SQL.  
SQL is amazing. I really like SQL.
Run Code Online (Sandbox Code Playgroud)

我们希望实施网站搜索,允许访问者输入条款并返回相关记录.用户可能会搜索:

Dinosaurs
Run Code Online (Sandbox Code Playgroud)

和SQL:

WHERE articleBody LIKE '%Dinosaurs%'
Run Code Online (Sandbox Code Playgroud)

通过返回正确的记录集来处理问题.

但是,如果用户误入恐龙,我们将如何应对?IE:

Dinosores
Run Code Online (Sandbox Code Playgroud)

(可怜的痛苦迪诺).我们如何搜索允许拼写错误?我们可以将我们在搜索中看到的常见拼写错误与正确的拼写相关联,然后搜索原始字词+更正后的字词,但维护时间很长.

有什么办法编程吗?

编辑

出现SOUNDEX可能有所帮助,但任何人都可以使用soundex给我一个输入搜索词的例子:

Dinosores wrocks
Run Code Online (Sandbox Code Playgroud)

返回记录而不是做:

WHERE articleBody LIKE '%Dinosaurs%' OR articleBody LIKE '%Wrocks%'
Run Code Online (Sandbox Code Playgroud)

谁会回来squadoosh?

Jam*_*man 5

如果您使用的是 SQL Server,请查看SOUNDEX

对于你的例子:

select SOUNDEX('Dinosaurs'), SOUNDEX('Dinosores')
Run Code Online (Sandbox Code Playgroud)

返回相同的值 (D526)。

您还可以使用 DIFFERENCE 函数(在与 soundex 相同的链接上)来比较相似程度(4 表示最相似,0 表示最相似)。

SELECT DIFFERENCE('Dinosaurs', 'Dinosores'); --returns 4
Run Code Online (Sandbox Code Playgroud)

编辑:

在寻找多文本选项之后,似乎这并不那么容易。我建议您参考 @Neil Knight 提供的 Fuzzt Logic 答案的链接(对我来说+1!)。

这篇 stackoverflow 文章还详细介绍了 TSQL 中模糊逻辑实现的可能来源。有一次,受访者还概述了全文索引作为您可能想要研究的潜力。