我正在做这个项目的作业。这个想法是建立一个类似于Netflix的网站。如何区分用户搜索输入的关键字?
我的任务是:
On the "Searching" page, the customer can search for movies by any of the following attributes or their combination (logical "AND" operation):
title;
year;
director;
star's first name and/or last name. This means you need to do both: a) first name or last name if only one of the two names is provided; b) first name and last name, if both names are provided.
我需要查询我的MySQL数据库对所有的电影,演员等配套的查询和吐回了我的网站上。我想知道区分用户搜索输入的关键字的最佳方式。我最初的想法是用空格分隔用户的搜索关键字,然后尝试将它们与MySQL表中的每一列进行匹配。
例如,如果用户搜索“冰冻伊迪娜门泽尔”我会先分析自己的搜索为单个单词“冻结”,“伊迪娜”,“门泽尔”,我会这样说
SELECT * FROM movies WHERE title = 'Frozen' UNION
SELECT * FROM stars WHERE first_name = 'Frozen' UNION
SELECT * FROM stars WHERE last_name = 'Frozen' UNION
SELECT * FROM movies WHERE title = 'Idina' UNION
SELECT * FROM stars WHERE first_name = 'Idina' UNION
SELECT * FROM stars WHERE last_name = 'Idina' UNION
SELECT * FROM movies WHERE title = 'Menzel' UNION
SELECT * FROM stars WHERE first_name = 'Menzel' UNION
SELECT * FROM stars WHERE last_name = 'Menzel'
SELECT * FROM stars WHERE first_name = 'Frozen' AND last_name = 'Idina';
SELECT * FROM stars WHERE first_name = 'Idina' AND last_name = 'Menzel';
但是,这似乎不是一个很好的方法,因为有很多不必要的查询,所以我想知道是否有更好的方法来做到这一点。
你有没有听说过全文检索? http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html –