在Mysql中使用反对中的子查询进行FULLTEXT搜索

时间:2013-03-31 23:02:31

标签: mysql full-text-search subquery

在MySQL中,我想在桌面'文章'上进行FULLTEXT搜索。我要搜索的文本将位于另一个表格“'CVs'

列下的”向量“中

我在尝试:

SELECT website 
FROM articles
WHERE MATCH (title, body)
AGAINST(
    SELECT CVs
    FROM Vectors
    WHERE Title="cv1")

但是,它会一直返回语法错误。

是否可以在AGAINST子句中运行子查询?

3 个答案:

答案 0 :(得分:1)

您希望能够:

SELECT website 
FROM articles cross join
     vectors
WHERE title = 'cv1' and MATCH (title, body) AGAINST(cv);

但是,against中的论证必须是常数。

您可以诉诸:

SELECT website 
FROM articles cross join
     vectors
WHERE title = 'cv1' and
      (title like concat('%', cv, '%') or body like concat('%', cv, '%'))

答案 1 :(得分:1)

来自documentation

The search string must be a literal string, not a variable or a column name.

您可能需要使用LIKE而不是MATCH,但您应该注意它会慢得多。

答案 2 :(得分:0)

您可以执行以下操作:

SET @search = (SELECT GROUP_CONCAT(CVs SEPARATOR " ") FROM Vectors WHERE Title="cv1") ;
SELECT website  FROM articles WHERE MATCH (title, body) AGAINST((@search) IN BOOLEAN MODE);