我有一个像下面这样的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快速完成?
感谢您的帮助
答案 0 :(得分:5)
一种方法是查看搜索词与关键词列表之间的Levenshtein距离。有一些如何在MySQL中实现这一点的例子,例如。 HERE
因为你有这么大的目录,所以你需要首先考虑实现过滤器(可能是基于' LIKE'查找),这样你就不会测量所有1M行的距离。 / p>
如果按距离对结果进行排名,则应该能够根据搜索的相关性对结果进行排序。