Zní to, jako byste v podmínce spojení potřebovali použít FULLTEXTOVÝ odpovídající výraz.
Nikdy jsem nepoužil fulltextovou shodu ve stavu spojení, takže si nejsem jistý, že to bude fungovat, ale hypoteticky by to mohlo fungovat takto:
SELECT DISTINCT c.*
FROM corpuses c JOIN searches s
ON (MATCH(c.title, c.body) AGAINST (s.term));
Dobře, zkusil jsem to pomocí vašich definic tabulek a několika ukázkových dat z manuálu MySQL. Zde je dotaz, který funguje (testováno s MySQL 5.1.30):
SELECT *
FROM corpuses
WHERE MATCH(title, body)
AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches)
IN BOOLEAN MODE);