Wygląda na to, że w warunku dołączenia musisz użyć wyrażenia PEŁNOTEKSTOWEGO.
Nigdy nie używałem dopasowania pełnotekstowego w warunku złączenia, więc nie jestem pewien, czy to zadziała, ale hipotetycznie może to wystarczyć:
SELECT DISTINCT c.*
FROM corpuses c JOIN searches s
ON (MATCH(c.title, c.body) AGAINST (s.term));
Dobra, próbowałem tego, używając definicji tabel i niektórych przykładowych danych z podręcznika MySQL. Oto zapytanie, które działa (testowane z MySQL 5.1.30):
SELECT *
FROM corpuses
WHERE MATCH(title, body)
AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches)
IN BOOLEAN MODE);