Звучит так, как будто вам нужно использовать выражение соответствия 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);