Sepertinya Anda perlu menggunakan ekspresi pencocokan FULLTEXT dalam kondisi gabungan Anda.
Saya tidak pernah menggunakan kecocokan teks lengkap dalam kondisi bergabung, jadi saya tidak yakin ini akan berhasil, tetapi secara hipotesis ini mungkin berhasil:
SELECT DISTINCT c.*
FROM corpuses c JOIN searches s
ON (MATCH(c.title, c.body) AGAINST (s.term));
Oke saya sudah mencobanya menggunakan definisi tabel Anda dan beberapa contoh data dari manual MySQL. Berikut kueri yang berfungsi (diuji dengan MySQL 5.1.30):
SELECT *
FROM corpuses
WHERE MATCH(title, body)
AGAINST ( (SELECT GROUP_CONCAT(term SEPARATOR ' ') FROM searches)
IN BOOLEAN MODE);