如何用php从mysql数据库中选择类似的记录?

时间:2017-05-04 09:18:06

标签: php mysql similarity

我有一个搜索表单,我想根据搜索到的标题从数据库中选择类似的项目。

现在我使用SELECT * FROM movies WHERE title LIKE '%".$_SESSION['search']."%';

但是,例如有人搜索'Jurassic Park2'或'Jurasic Park 2',它不会给'侏罗纪公园2'。

如何选择那些与搜索标题有某些特征差异的电影?

3 个答案:

答案 0 :(得分:2)

您正在寻找Mysql full text search。这是一个tutorial开始。 基本上,您需要在要搜索的字段上创建全文索引,然后您可以使用查询来查找类似的值: MATCH (col1,col2,...) AGAINST (expr [search_modifier])

答案 1 :(得分:0)

可以看看使用soundex,只需注意规定的限制,我不确定它在大型数据集上的性能。

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_soundex

答案 2 :(得分:0)

我尝试了全文搜索:

SELECT * FROM movies WHERE MATCH(title) AGAINST('%".$_SESSION['search']."%' IN NATURAL LANGUAGE MODE) > 1 ORDER BY title;

我试图重写1到0.5或其他小于1,但结果相同。 如果它完全包含搜索到的标题,则给出结果。

侏罗纪给侏罗纪世界

但是Jurasic什么也没给。