Вы можете сделать это в одном запросе, используя UNION ALL, но вам нужно будет использовать три параметра - все три с одинаковым поисковым значением - и он будет иметь одинаковую загрузку базы данных, если не больше, чем три отдельные запросы, так как все результаты будут извлечены во временную таблицу для их сортировки.
Попробуйте что-то вроде:
SELECT id, title, text, date, relevance
FROM (
SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
FROM news
UNION ALL
SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
FROM posts
UNION ALL
SELECT id, title, text, date, MATCH(text) AGAINST (?) AS relevance
FROM gallery
) temp_sort_table
ORDER BY relevance DESC