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?
如果您使用的是 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 中模糊逻辑实现的可能来源。有一次,受访者还概述了全文索引作为您可能想要研究的潜力。