Use uma lista suspensa perto da entrada de texto de pesquisa para selecionar a categoria ou várias caixas de seleção para ver qual união você teria que fazer? Eu recomendaria você Sphinx http://sphinxsearch.com/
Tentar
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;
}
}