Vaya...google me vuelve a traer por aqui. Tenia el mismo problema que tu y encontre un articulo que utilizaba "LIKE"...pero eran consultas MUY lentas...segui buscando y encontre otro articulo que optimiza con un algoritmo de busqueda por puntos, es este:
http://www.programacion.com/php/articulo/adr_buscador/
Creia que sabia algo de php...pero no, porque en el articulo menciona un if parecido a:
if ($busqueda<>'')
pero ni idea de que es "<>" no habia visto esos operadores nunca, y desconozco si sea POO (que no se nada en php, java ya es otra historia) y igual me pasa con esto:
$referencia=$row->REFERENCIA;
yo suelo utilizar $referencia=$row["REFERENCIA"];
Espero que te ayude el articulo del buscador y si algun alma caricativa me puede explicar mis 2 pequeñas dudas lo agradecere(abriria otro tema, pero como va en relacion al contestar este, pues lo deje aki) Un saludo.