【发布时间】:2011-07-08 03:38:15
【问题描述】:
鉴于您的数据存储在数据库中的某处:
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%'
可以很好地返回正确的记录集。
但是,如果用户拼错恐龙,我们将如何应对?即:
Dinosores
(可怜的恐龙)。我们如何搜索允许拼写错误?我们可以将我们在搜索中看到的常见拼写错误与正确的拼写相关联,然后搜索原始词+更正词,但这很耗时。
任何编程方式?
编辑
似乎 SOUNDEX 可以提供帮助,但谁能给我一个使用 soundex 输入搜索词的示例:
Dinosores wrocks
返回记录而不是做:
WHERE articleBody LIKE '%Dinosaurs%' OR articleBody LIKE '%Wrocks%'
哪个会返回小队?
【问题讨论】:
-
levenshtein 距离或 Soundex
-
取决于您使用的数据库...有“Soundex”函数可用于在听起来相似的单词上获得“匹配”...
-
我认为这不能纯粹在 SQL 中完成。通配符搜索已经很慢了。我宁愿使用像 Apache Lucene 或 Solr 这样的成品。