mysql - 如何区分用户搜索输入的关键词?

标签 mysql

我正在做这个项目作为家庭作业。我们的想法是建立一个类似于 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 Full Text Search

Sphinx Search

ElasticSearch

有许多工具可用于您的任务...

关于mysql - 如何区分用户搜索输入的关键词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244373/

相关文章:

mysql 查询,使用结果作为变量

mysql - mysql 内连接后如何获取剩余行

php - 表单提交捕获到数据库不起作用

javascript - 查询在数据表子行中的经理姓名中选择员工姓名

PHP 查询 : How to input data into 2 columns column on the same table at different times

php - 将MySQL数据显示到HTML表格中(解释清楚)

php - IN() 在 DB 中快速选择 php 中的慢速。重写加入更慢

php - Windows 8 应用程序 C# 与 PHP 和 Mysql

mysql - 如何让查询显示出来?

mysql - 请求一个sql查询