Mysql类似文本搜索

时间:2013-05-14 08:44:29

标签: php mysql

我有一个像下面这样的mysql表 -

------------
keyword_text
------------
Lego kit for kids
Lego kit only for kids
Lego kit kids

+more different text entry

如您所见,上例中的 keyword_text 都相似。我想找到以上任何关键字的所有匹配项。例如,如果我仅为孩子 搜索 乐高套件,它将返回所有这3个keyword_text。

Input:
Lego kit only for kids

Output:
Lego kit for kids
Lego kit only for kids
Lego kit kids

OR 

mysql resource to use with mysql_fetch_assoc

该表格大约有1M条目,全文索引已添加到 keyword_text 。是否有任何mysql查询要做到这一点或任何类似的方式使用PHP快速完成?

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

一种方法是查看搜索词与关键词列表之间的Levenshtein距离。有一些如何在MySQL中实现这一点的例子,例如。 HERE

因为你有这么大的目录,所以你需要首先考虑实现过滤器(可能是基于' LIKE'查找),这样你就不会测量所有1M行的距离。 / p>

如果按距离对结果进行排名,则应该能够根据搜索的相关性对结果进行排序。