Lo que se puede hacer es al obtener los criterio de búsqueda dividirlos en sus respectivas palabras:
Código PHP:
//por ejemplo
if($criterio1 != ""){
$listaCriterio1 = explode(' ',$criterio1);
//y con ello formar la condición de búsqueda:
//si hubiera criterios anteriores hay que comprobarlos por si hay que añadir AND a la claúsura WHERE:
if($sqlCriterioAnterior != "" ){$sqlCriterio1 = "AND (";}
else{$sqlCriterio1 = "(";}
for($i = 0; $i<count($listaCriterio1); $i++){
if($i>0){$sqlCriterio1.="OR ";}
$sqlCriterio1 .= "Criterio1 REGEXT '$listaCriterio1[$i]' ";
}
$sqlCriterio1.=") ";
$criterioAnterior.=$sqlCriterio1;
}
Donde REGEXP podemos verlo explicado aquí:
http://dev.mysql.com/doc/refman/5.0/es/regexp.html
$sqlCriterioAnterior se refiere al criterio
Los paréntesis es porque hacemos queremos que coincidan todos los criterios pero también que en cada uno aparezca al menos una de las expresiones:
(a || b || c ...)&&( d || e || f...).... donde (a || b || c ...) es un criterio de búsqueda.
(esta fórmula se puede sustituir por la que se quiera)
Y por último componer la consulta:
$sqlTotal="Select * FROM ... WHERE $criterioAnterior....;