0

我第一次尝试全文搜索,但无法让查询正常工作。这是我一直在尝试的新代码(来自 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)) ";

现在,我知道对我来说这里的一个大问题是我的选择语句中有不同数量的列以及不同的数据类型。我需要弄清楚如何从我选择的所有列中提取我需要的所有信息,但仍然使用全文搜索。这是一个在线音频库。我现在正在使用常规的 WHERE/LIKE 设置,但不幸的是,使用该方法,搜索一位演讲者的姓名 (Glenn Clark) 会在我清理和分隔关键字时无论在何处使用它们都会显示“glenn”和“clark”的结果。 ...更不用说“演讲者”表有单独的名字和姓氏列。

解决这个问题的最好方法是什么?

我的表结构是:

  1. Master(13列的主表)
  2. 扬声器(6列)
  3. 营地(3 列)
  4. 系列(6列)
  5. 主题(2列)

在我当前的代码中,我在运行搜索的同时选择了与搜索不直接相关的所有额外信息位,因为我使用这些位(如所有“id”字段)输出我需要的所有信息结果如下所示: 在此处输入图像描述

我需要额外的查询还是我完全错误的方式。

谢谢您的帮助。

4

0 回答 0