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

问题描述 投票:0回答:1

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

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

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

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

html mysql sql search where-clause
1个回答
0
投票

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

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

在有效关键字列表中查找搜索字词的外观。如果找不到,则使用“ Levenshtein距离”(描述为here)来查找最接近的匹配项。然后在搜索中使用它们。如果您搜索“ Levenshtein distance mysql”,您将在此处找到该算法的实现。

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

© www.soinside.com 2019 - 2024. All rights reserved.