Usa un menu a discesa vicino all'input del testo di ricerca per selezionare la categoria o più caselle di controllo per vedere quale unione dovresti fare? Ti consiglierei Sphinx http://sphinxsearch.com/
Prova
SELECT 1 as type,tname AS keyword FROM t
UNION
SELECT 2 as type,sname AS keyword FROM sub
UNION
SELECT 3 as type,cname AS keyword FROM c
UNION
SELECT 4 as type,iname AS keyword FROM i
foreach($results as $result)
{
switch($result['type'])
{
case 1:
$cat_1[]=$result;
break;
case 2:
$cat_2[]=$result;
break;
}
}