Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2009, 07:37
Mikelon85
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 23 años, 9 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