2017-05-04 40 views
2

我有一个搜索表单,我想根据搜索的标题从数据库中选择类似的项目。如何从php数据库选择类似的记录?

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

但是,有人搜索'侏罗纪公园2'或'侏罗纪公园2'它不给'侏罗纪公园2'。

如何选择那些与搜索到的标题有一些字符差异的电影?

+0

一些东西一样['全文search'(https://dev.mysql.com/doc/refman/5.7/en/fulltext- search.html):) – hassan

+0

你应该尝试更好的工具来解决这个问题。请考虑ElasticSearch。 –

回答

2

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

+0

现在我明白了在哪里可以使用'Mysql全文搜索'。 +1这个:) –

0

我尝试了全文检索:

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

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

侏罗纪给出侏罗纪世界

但Jurasic给人什么

+1

兄弟,请不要在这里使用'%''%'。$ _ SESSION ['search']。“%''只需将价值包裹在单引号内并再试一次 –

+0

我删除了'%'但没有改变。 –

+0

注意:你可能应该在你的查询中跳过你的$ _SESSION ['search'],这取决于你用什么来连接你的数据库:http://php.net/manual/en/mysqli.real-escape -string.php – SheperdOfFire

相关问题