我正在做这个项目作为家庭作业。我们的想法是建立一个类似于 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 数据库中查询所有与其查询匹配的电影、 Actor 等,并将其返回到我的网站上。我想知道区分用户搜索输入的关键字的最佳方法是什么。我最初的想法是用空格分隔用户的搜索关键字,然后尝试将它们与 MySQL 表中的每一列进行匹配。
例如,如果用户搜索“Frozen Idina Menzel”,我将首先将其搜索解析为单个单词“Frozen”、“Idina”、“Menzel”我会说这样的话
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';
但是,这似乎不是一个很好的方法,因为有很多不必要的查询,所以我想知道是否有更好的方法来做到这一点。
最佳答案
使用全文搜索,可以是 MySQL 中构建的搜索,也可以是外部搜索。
有许多工具可用于您的任务...
关于mysql - 如何区分用户搜索输入的关键词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244373/