我有一个庞大的数据库,其中包含html
,html5
,xhtml
等关键字。
用户可以搜索房间,到目前为止它只是实现为
[...] WHERE name LIKE '%keyword%' LIMIT 20;
这是一个简单的解决方案,但它不是容错的。用户犯了很多错误:3。为了增强这一点,我想引入一个“松散搜索”,这意味着如果“htlm”返回no或只返回少量(少于10个)匹配,则添加“html”并类似于列表。
现在真正的问题是:我该怎么做? 这种“松散搜索”是否有技术术语?
答案 0 :(得分:0)
这绝对是文本检索的一部分,也称为模糊匹配或近似字符串匹配。例如,转到Google,输入“MSYQL”,它会推荐“MYSQL”。
这是一种典型的方法。从所有有效关键字的列表开始。是的,这是开始的地方。在许多文本应用程序中,这将被称为词典。
在有效关键字列表中查找搜索字词。如果你没有找到任何东西,那就用“Levenshtein distance”(描述here)来找到最接近的匹配。然后在搜索中使用这些。如果您搜索“Levenshtein distance mysql”,您将在此处找到算法的实现。
如果您只有一些已知的拼写错误,那么您也可以使用同义词库来解决问题。这会将一个搜索字词替换为可能匹配的其他字词。