松散的搜索,例如这样“htlm”会找到“html5”

时间:2013-09-04 12:37:16

标签: mysql sql search where-clause

我有一个庞大的数据库,其中包含htmlhtml5xhtml等关键字。 用户可以搜索房间,到目前为止它只是实现为

[...] WHERE name LIKE '%keyword%' LIMIT 20;

这是一个简单的解决方案,但它不是容错的。用户犯了很多错误:3。为了增强这一点,我想引入一个“松散搜索”,这意味着如果“htlm”返回no或只返回少量(少于10个)匹配,则添加“html”并类似于列表。

现在真正的问题是:我该怎么做? 这种“松散搜索”是否有技术术语?

1 个答案:

答案 0 :(得分:0)

这绝对是文本检索的一部分,也称为模糊匹配或近似字符串匹配。例如,转到Google,输入“MSYQL”,它会推荐“MYSQL”。

这是一种典型的方法。从所有有效关键字的列表开始。是的,这是开始的地方。在许多文本应用程序中,这将被称为词典。

在有效关键字列表中查找搜索字词。如果你没有找到任何东西,那就用“Levenshtein distance”(描述here)来找到最接近的匹配。然后在搜索中使用这些。如果您搜索“Levenshtein distance mysql”,您将在此处找到算法的实现。

如果您只有一些已知的拼写错误,那么您也可以使用同义词库来解决问题。这会将一个搜索字词替换为可能匹配的其他字词。