1

我有一个如下的mysql表-

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

+more different text entry

如您所见,上面示例中的keyword_text都是相似的。我想找到上述任何关键字的所有匹配项。例如,如果我搜索Lego kit only for kids,它将返回所有这 3 个关键字文本。

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 快速做到这一点?

感谢帮助

4

1 回答 1

5

一种方法是查看搜索词和关键字列表之间的 Levenshtein 距离。有一些关于如何在 MySQL 中实现此功能的示例,例如。这里

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

如果您按距离对结果进行排名,那么您应该能够按与搜索的相关性对结果进行排序。

于 2013-05-14T10:04:42.020 回答