php - 如何设置这个全文索引

标签 php mysql phpmyadmin

我想要一些关于如何在 phpMyAdmin 中设置全文索引的指导,如下所示:

表格

universities:
id
name

programs:
id
name
university_id

courses:
id
name
program_id

students:
id
name
course_id

搜索功能 用户只需要为学生搜索,但我想创建与 students.course_id 等匹配的 students.name 和 courses.name 的全文,以便学生姓名、类(class)名称(学生参与)、程序名称(类(class)给出)和大学名称(类(class)所属)均可搜索。

查询 如果我按上面的方式构造它,将创建全文,以便它像标准一样可搜索,例如与 PDO:

$STH = $DBH->prepare('SELECT * FROM students WHERE MATCH(fulltext) AGAINST(:query IN BOOLEAN MODE));
$STH->bindParam(':query', $query);

或者 pdo 查询在 php 中看起来如何?

这也是一个繁重的搜索功能吗?

大约数量:5 所大学、100 个项目、1000 门类(class)和 20000 名学生。

最佳答案

FULLTEXT 索引不是这样工作的。 FULLTEXT 索引必须位于 MyISAM 表中的单个文本(CHAR/VARCHAR/TEXT)列上,并允许搜索匹配该列内容中的单词。例如,您可以在类(class)目录中使用 FULLTEXT 索引,以允许用户在类(class)描述中搜索文本。

在你的情况下,你可能想要做的是在每个 students.namecourses.name 上创建一个“正常”(非全文)索引、programs.nameuniversities.name,然后对这些表中的每一个执行一个查询并自行合并结果。 (例如,您可能必须以不同于匹配大学的方式显示匹配学生的结果。)将现有的 student.name 字段分解为单独的名字和姓氏可能会有所帮助-name 字段,因为这将允许您分别搜索这两个字段。

关于php - 如何设置这个全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626096/

相关文章:

php - 从在线更改为本地服务器时连接到数据库(wordpress)

具有多个 "for each"的 MySQL 查询

python - 使用Python加载数据到Mysql

mysql - 如何通过 phpMyAdmin 界面使用存储过程

php - 无法在 CentOS 7 上安装 phpMyAdmin

php - 如何使用 MYSQL 和 jquery ajax 调用浏览每 5 条记录

javascript - 为什么我的 wp_enqueue_script 不工作?

MYSQL 查询以检查值是否为空/空白

php - MySQL 不能与虚拟主机一起工作

php - Cocos2dx C++ 将游戏数据发送到远程服务器上的 MySQL 数据库