Que tal brother mira en este momento estoy en el trabajo, y no tengo MySQL para crear las tablas y probar, pero mas o menos viendo lo que quieres, creo que este query te podria ayudar.
Código:
select f.idForo,f.NombreForo,t.idTema,t.TituloTema,ut.idUsuario,ut.Usuario
from Foros f, Temas t, Respuestas r, Usuarios ut
where t.idForo = f.idForo and r.idTema = t.idTema
and ut.idUsuario = t.idUsuario
and (t.TituloTema like '%?%' or t.MensajeTema like '%?%' or r.MensajeRespuesta like '%?%')
and (t.idUsusuario = ? or r.idUsuario = ?)//Tendrias que controlar que si no te envian nada aqui, no haga esto
and f.idForo = ?//Tendrias que controlar que si no te envian nada aqui, no haga esto
Esto te lista tu búsqueda pero por temas, cualquier cosa me avisas, espero haberte podido ayudar.