0

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

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

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

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

4

1 回答 1

0

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

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

在有效关键字列表中查找您的搜索词。如果您没有找到任何内容,请使用名为“Levenshtein distance”(在此处描述)的方法来查找最接近的匹配项。然后在搜索中使用这些。如果您搜索“Levenshtein distance mysql”,您将在此处找到该算法的实现。

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

于 2013-09-04T12:54:06.797 回答