Изглежда, че трябва да използвате съвпадащ израз 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);