Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/10/2007, 22:30
Artefio
 
Fecha de Ingreso: junio-2007
Mensajes: 76
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Buscador con frases en cualquier orden

Hola Lanceousp. Mira yo tambien estoy armando un buscador y me estoy peleando con MATCH AGAINST. Me esta dando algunos problemas pero parece interesante. Hipoteticamente seria mas rapido que utilizar like y sirve para busquedas multiples, ya sea de multiples palabras a buscar como de multiples campos. Hay vastantes paginas con referencias aunque creo que las que encontre manejan el mismo codigo. Te lo dejo aca fijate, talvez te sirve. Se dice que es mas rapido, no lo se. Si te funciona me gustaria saberlo, a ver si logro resolver el problema que me da con el LIMIT. Se usa con un indice FULLTEXT. Si solo se busca una palabra la consulta se hace con LIKE si es con mas usa lo que MATCH AGAINST. Tenes que crear un indice FULLTEXT, al menos eso decia donde lo encontre. Intente encontrar la pagina para dejartela pero no di con ella.

Código PHP:
SELECT * , MATCH (TITULO,DESARROLLOAGAINST ('$busqueda') AS puntuacion FROM ARTICULOS WHERE MATCH (TITULODESARROLLOAGAINST ('$busqueda'ORDER BY puntuacion DESC LIMIT 50 

Código PHP:
 <?php
//cadena de conexion
mysql_connect("host","usuario","password");
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if (
$numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%' LIMIT 50";
} elseif (
$numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql("teleformacion"$cadbusca);
While(
$row=mysql_fetch_object($result))
{
//Mostramos los titulos de los articulos o lo que deseemos...
$referencia=$row->REFERENCIA;
$titulo=$row->TITULO;
echo 
$referencia." - ".$titulo."<br>";;
}
?>
Mi buscador me esta dando un problema, me hace diferencia de minusculas y mayusculas y tildes. Lo que mas me complica es que ya hice un buscador tiempo atras y no me da este problema pero no logro terminar de darme cuenta porque. Pedi ayuda en el foro pero no logre nada, creo que tiene que ver con la configuracion de la base. Si alguien sabe como hacer para que una busqueda de resultados ya se busque por ejemplo Vasos - vasos, o Ajíes - ajies. Estare enormemente agradecido.

Saludos...