我第一次尝试全文搜索,但在查询工作时遇到了麻烦。这是我一直在尝试的新代码(来自PHP文件):
$browse_all_query = "(SELECT master_id, title, series_id, series_number, year, date, day, month, speaker_id, speaker2_id, speaker3_id " .
"FROM master " .
"WHERE MATCH (title) AGAINST ($where_clause)) " .
"UNION " .
"(SELECT camp_name, camp_id " .
"FROM camp " .
"WHERE MATCH (camp_name) AGAINST ($where_clause)) " .
"UNION " .
"(SELECT subject_name, subject_id " .
"FROM subject " .
"WHERE MATCH (subject_name) AGAINST ($where_clause)) " .
"UNION " .
"(SELECT speaker_id, s_title, f_name, m_name, l_name, l_name2 " .
"FROM speaker " .
"WHERE MATCH (s_title, f_name, m_name, l_name, l_name2) AGAINST ($where_clause)) " .
"UNION " .
"(SELECT series_title, series_id " .
"FROM series " .
"WHERE MATCH (series_title) AGAINST ($where_clause)) ";
现在,我知道这里的一个大问题是我的select语句中有不同数量的列以及不同的数据类型。我需要的是弄清楚如何从我选择的所有列中提取所需的所有信息,但仍然使用全文搜索。这是一个在线音频库。我现在正在使用常规的WHERE / LIKE设置,但不幸的是,使用该方法,搜索一个发言者的名字(Glenn Clark)会在“glenn”和“clark”的任何地方显示结果,因为我会清理并分离我的关键字。 ...更不用说“扬声器”表有单独的名字和姓氏列。
最好的方法是什么?
我的表结构是:
在我目前的代码中,我在搜索的同时选择了与搜索无关的所有额外信息,因为我使用这些位(如所有“id”字段)输出所有信息我需要的结果如下所示:
我是否需要其他疑问,或者我是否采取了错误的方式。
感谢您的帮助。