Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2009, 07:37
Mikelon85
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Problema con buscador FULLTEXT (Match, Against...)

Código PHP:
<?php
conectar
();
//iniciamos paginador
if (!isset($_GET['p'])) {
    
$p 0;
}
else {
    
$p $_GET['p'];
}
//configurar valores search
$res 0//resultados de busqueda a 0
$ini $p*10// resultado inicial
$prints 10// resultados a mostrar
$search_terms mysql_real_escape_string($_GET['q']);
$search_terms htmlentities($search_terms);
$cuenta explode(" "$search_terms);
$cuenta count($cuenta);
if (
$cuenta == 1) { //Si la busqueda es de una palabra
    
$sacar "SELECT titulo,artist,rand FROM arch WHERE titulo LIKE '%$search_terms%' OR artist LIKE '%$search_terms%' ORDER BY id DESC LIMIT $ini,$prints";
}
else {
    
$sacar "SELECT titulo, artist, rand, MATCH (titulo,artist) AGAINST ('$search_terms' IN BOOLEAN MODE) AS coincidencias FROM arch WHERE MATCH(titulo,artist) AGAINST ('$search_terms' IN BOOLEAN MODE) ORDER BY coincidencias DESC LIMIT $ini,$prints";
}
$ask mysql_query($sacar);
$records mysql_num_rows($ask);
while (
$view mysql_fetch_assoc($ask)) {
    
$res++;
    
$titulo $view["titulo"];
    
$rand $view["rand"];
    
$artist $view["artist"];
    
$artist strtolower($artist);
    
$texto_indexa $titulo."-".$artist;
    
$texto_indexa preg_replace('/\s+/'' '$texto_indexa);
    
$texto_indexa str_replace("#"""$texto_indexa);
    
$texto_indexa str_replace(" ""-"$texto_indexa);
    
$texto_indexa str_replace("%"""$texto_indexa);
    
$texto_indexa str_replace("/""-"$texto_indexa);
    
$texto_indexa str_replace('"\"'"-"$texto_indexa);
    
$texto_indexa str_replace("`"""$texto_indexa);
    
$texto_indexa str_replace("'"""$texto_indexa);
    
$texto_indexa str_replace("ñ""n"$texto_indexa);
    
$texto_indexa str_replace("'""-"$texto_indexa);
    
$link_indexa 'escucha/'.$rand.'/'.$texto_indexa;
    echo 
$link_indexa;
}
if (
$res == 0) {
    echo 
"No se ha encontrado nada con estos criterios de b&uacute;squeda<br><br>Te puede interesar:<br><br>";
}
$next $p+1;
if (
$p>0) {
    
$back $p-1;
    echo 
"<a href='search.php?q=".$search_terms."&p=".$back."'><< Back</a> | ";
}
if (
$records == 10) {
    echo 
"<a href='search.php?q=".$search_terms."&p=".$next."'>Next >></a>";
}
mysql_close($link);

?>
Como veis, el buscador funciona, siempre y cuando, por ejemplo en el buscador no pogamos palabras de menos de 3 letras, porque si pongo "u2 one" no me saca nada :(

Quiero mejorar el buscador, para que me funcione bien en todas las busquedas ya sea de 1, 2 o 10 letras.

Es un buscador que tiene muchas busquedas por segundo, por lo que agradecería un buscador que no saturase el servidor. Actualmente, con ese código funciona perfecto, pero no me saca todos los registros necesarios

Por favor, es urgente.

Gracias!
__________________
aste nagusia