我想要一些关于如何在 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.name
、courses.name
上创建一个“正常”(非全文)索引、programs.name
和 universities.name
,然后对这些表中的每一个执行一个查询并自行合并结果。 (例如,您可能必须以不同于匹配大学的方式显示匹配学生的结果。)将现有的 student.name
字段分解为单独的名字和姓氏可能会有所帮助-name 字段,因为这将允许您分别搜索这两个字段。
关于php - 如何设置这个全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626096/