En ese caso vas a tener que componer con PHP tu sentencia SQL en función de las "palabras" que pueda contener tu frase (e incluso descartanto artículos y demás palabras tal vez de menos de N caracteres (3?) ...)
Toma tu "frase" a buscar como un string y empieza a desglosarlo en palabras, usa explode() al caracter espacio (" ") para tal fin.
$frase="cinta de enrrollar";
Con una sentencia SQL unando LIKE tipo:
SELECT * FROM tabla WHERE campo LIKE '$frase'
tendrías las ocurrencias de toda la frase completa. Ya que hablas de buscar primero así y si NO se encuentra resultados .. ejecutar otras sentencias SQL por las "palabras" que componene esa frase a buscar .. cuenta los registros arrojados de la consulta:
Código PHP:
$sql="SELECT * FROM tabla WHERE campo LIKE '$frase'";
$resultado=mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($resultado) >0){
// presentas los resultados para la frase completa.
} else {
// ejecutas la sentencia SQL para las "palabras" que contenga la frase.
// sería algo así .. No lo he probado.
$palabras=explode(" ",$frase);
// estaría bueno filtrar palabras a buscar .. por tamaño en caracteres o para eliminar artículos y demás palabras similares.
$total_palabras=count($palabras);
$x=0;
$sql_condicional='';
foreach ($palabras as $palabra){
$sql_condicional .= "campo LIKE '".$palabra."'";
if ($total_palabras < $x){
$sql_condicional .= " AND ";
}
$x++;
}
$sql="SELECT * FROM tabla WHERE ".$sql_condicional;
// etc .. ejecuta tu consulta y muestra resultados.
}
Un saludo,