Hola pues estoy creando un buscador con este algoritmo, pero tengo una serie de problemas, aqui los expecifico.
1.- Primero compruebo si el usuario a escrito 1 o mas palabras, para ver que metodo voy a utilizar.
Código:
$palabra = ucwords(Limpiar($_POST['palabra']));
$trozos = explode(" ", $palabra);
$palabras = count($trozos);
#Si solo escribio 1 palabra, usamos el precedimiento LIKE
if($palabras == 1) {
$busqueda = Query("articulos", "WHERE titulo LIKE '%$palabra%' or contenido LIKE '%$palabra%' LIMIT 50");
$pr = 'No';
#Si escribio mas de 2 usamos MATCH...AGAINST
} elseif($palabras > 1) {
$busqueda = mysql_query("SELECT id, titulo, fecha, leido, autor, MATCH (titulo, contenido) AGAINST ('".($palabra)."') AS score FROM azp_articulos WHERE MATCH (titulo, contenido) AGAINST ('".($palabra)."') ORDER BY score DESC LIMIT 50");
$pr = 'Si';
}
Bueno aqui si pongo una palabra si funciona el script, pero si coloco 2 o mas... Al parecer no las busca.
A continuación tengo el siguiente codigo, para comprobar si la encontro...
Código:
$total = NumRows($busqueda);
#Vemos si encontramos algun articulo
if($total == 0) {
$sql = Query("articulos_busquedas", "WHERE busqueda LIKE '%$palabra%'");
$total = NumRows($sql);
$ip = Ip();
$fecha = Fecha();
if($total == 0) {
Insert("articulos_busquedas", "busqueda, frecuencia, fecha, ip", "'$_POST[palabra]', '1', '$fecha', '$ip'");
} else {
$row = GetRows($sql);
Update("articulos_busquedas", "frecuencia = (frecuencia) + '1', fecha = '$fecha', ip = '$ip' WHERE id = '$row[id]' LIMIT 1");
} Free($sql);
echo '<p align="center"><b><font face="Verdana" size="1">Lo Sentimos, su busqueda no fue encontrada, pero ha sido almacenada en nuestra base de datos para anexarla lo mas pronto posible, esperamos su comprensión.<br><a href="javascript:history.go(-1)">Regresar</a></font></b></p>';
} else {
#-Imprimimos Resultados
}
Pasando esa busqueda siempre me tira que no la encontro, aunque si exista el articulo en la base de datos.
Alguien sabe que tengo mal? de antemano gracias.