Có vẻ như bạn cần sử dụng biểu thức so khớp FULLTEXT trong điều kiện kết hợp của mình.
Tôi chưa bao giờ sử dụng kết hợp toàn văn bản trong một điều kiện tham gia, vì vậy tôi không chắc điều này sẽ hoạt động, nhưng theo giả thuyết thì điều này có thể làm được:
SELECT DISTINCT c.*
FROM corpuses c JOIN searches s
ON (MATCH(c.title, c.body) AGAINST (s.term));
Được rồi, tôi đã thử nó bằng cách sử dụng các định nghĩa bảng của bạn và một số dữ liệu mẫu từ hướng dẫn sử dụng MySQL. Đây là một truy vấn hoạt động (được thử nghiệm với MySQL 5.1.30):
SELECT *
FROM corpuses
WHERE MATCH(title, body)
AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches)
IN BOOLEAN MODE);