Mysql全文搜索具有不同数量的列

时间:2012-11-06 20:44:24

标签: php mysql full-text-search

我第一次尝试全文搜索,但在查询工作时遇到了麻烦。这是我一直在尝试的新代码(来自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”的任何地方显示结果,因为我会清理并分离我的关键字。 ...更不用说“扬声器”表有单独的名字和姓氏列。

最好的方法是什么?

我的表结构是:

  1. Master(13列主表)
  2. 演讲者(6栏)
  3. Camp(3栏)
  4. 系列(6列)
  5. 主题(2栏)
  6. 在我目前的代码中,我在搜索的同时选择了与搜索无关的所有额外信息,因为我使用这些位(如所有“id”字段)输出所有信息我需要的结果如下所示: enter image description here

    我是否需要其他疑问,或者我是否采取了错误的方式。

    感谢您的帮助。

0 个答案:

没有答案