Parece que necesita usar una expresión de coincidencia de TEXTO COMPLETO en su condición de unión.
Nunca he usado una coincidencia de texto completo en una condición de combinación, así que no estoy seguro de que esto funcione, pero hipotéticamente esto podría funcionar:
SELECT DISTINCT c.*
FROM corpuses c JOIN searches s
ON (MATCH(c.title, c.body) AGAINST (s.term));
De acuerdo, lo probé usando las definiciones de su tabla y algunos datos de muestra del manual de MySQL. Aquí hay una consulta que funciona (probada con MySQL 5.1.30):
SELECT *
FROM corpuses
WHERE MATCH(title, body)
AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches)
IN BOOLEAN MODE);