在MySQL中,我想在桌面'文章'上进行FULLTEXT搜索。我要搜索的文本将位于另一个表格“'CVs'
列下的”向量“中我在尝试:
SELECT website
FROM articles
WHERE MATCH (title, body)
AGAINST(
SELECT CVs
FROM Vectors
WHERE Title="cv1")
但是,它会一直返回语法错误。
是否可以在AGAINST子句中运行子查询?
答案 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)
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);