如何:匹配(搜索空间)(与另一个表的列连接)

时间:2009-01-30 19:14:07

标签: sql mysql full-text-search

我对SQL查询很糟糕,所以这可能是一个愚蠢的问题。但是,这里大致是我想做的事情:

  

表语料库//我想搜索的东西      标题      身体      ...

     

表搜索//要应用于语料库的搜索词列表      长期
     ...

我想写的查询或多或少如下:我相信我需要某种联接,但我不确定如何做到这一点。另外,我不确定against()运算符会从文字中除外 - 文档似乎没有提到任何一种方式。

  

从匹配的语料库中选择*   (标题,正文)反对(选择术语   来自搜索);

我正在使用MySQL 5

非常感谢任何想法。

谢谢! 布赖恩

1 个答案:

答案 0 :(得分:1)

听起来你需要在连接条件中使用FULLTEXT匹配表达式。

我从来没有在连接条件下使用全文匹配,所以我不确定这是否会起作用,但假设这可能会这样做:

SELECT DISTINCT c.*
FROM corpuses c JOIN searches s 
  ON (MATCH(c.title, c.body) AGAINST (s.term));

好的,我已经尝试使用你的表定义和MySQL手册中的一些示例数据。这是一个有效的查询(使用MySQL 5.1.30测试):

SELECT *
FROM corpuses 
WHERE MATCH(title, body)
  AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches) 
    IN BOOLEAN MODE);