Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con buscador FULLTEXT (Match, Against...)

Estas en el tema de Problema con buscador FULLTEXT (Match, Against...) en el foro de Mysql en Foros del Web. Código PHP: <?php conectar (); //iniciamos paginador if (!isset( $_GET [ 'p' ])) {      $p  =  0 ; } else {      $p  =  $_GET [ 'p' ]; ...
  #1 (permalink)  
Antiguo 24/09/2009, 07:37
 
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
  #2 (permalink)  
Antiguo 24/09/2009, 07:53
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Intenta poniendole + al inicio de la cadena a buscar y * al final
Cita:
WHERE MATCH(titulo,artist) AGAINST (+'{$search_terms}'* IN BOOLEAN MODE)
S.E.U.O.
  #3 (permalink)  
Antiguo 24/09/2009, 08:04
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Cita:
Iniciado por nonpublic Ver Mensaje
Intenta poniendole + al inicio de la cadena a buscar y * al final

S.E.U.O.


Poniendo eso:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/search/search.php on line 26
__________________
aste nagusia
  #4 (permalink)  
Antiguo 24/09/2009, 08:08
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Lo que deberia quedar es cada termino de busqueda con el simbolo +

en este caso algo asi como +$cuenta[0]* +$cuenta[1]* ya que alli almacenas los parametros de busqueda.

Prueba tambien poniendo luego de tu consulta
Cita:
echo $sacar;
exit();
S.E.U.O.

P.D. Intenta con LIKE %
  #5 (permalink)  
Antiguo 24/09/2009, 08:23
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Cita:
Iniciado por nonpublic Ver Mensaje
Lo que deberia quedar es cada termino de busqueda con el simbolo +

en este caso algo asi como +$cuenta[0]* +$cuenta[1]* ya que alli almacenas los parametros de busqueda.

Prueba tambien poniendo luego de tu consulta


S.E.U.O.

P.D. Intenta con LIKE %
LIKE??? Estoy con FULLTEXT. Creo que no has entendido cual es mi problema. El problema es que el FULLTEXT por defecto ignora la busqueda de palabras que tengan menos de 3 letras, y si toco eso en la conf, perdería la efectividad del FULLTEXT SEARCH. Sabeis alguna alternativa?
__________________
aste nagusia
  #6 (permalink)  
Antiguo 24/09/2009, 09:17
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Manten tu consulta de la forma que tenias originalmente y revisa esto:
http://dev.mysql.com/doc/refman/5.0/...variables.html
Segun la documentacion de MySql debes modificar tu archivo de configuracion de acuerdo a tus necesidades:
Cita:
[mysqld]
ft_min_word_len=3 //Aqui pones la cantidad minima de caracteres
Ref. http://dev.mysql.com/doc/refman/5.0/...ne-tuning.html
  #7 (permalink)  
Antiguo 24/09/2009, 09:55
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Cita:
Iniciado por nonpublic Ver Mensaje
Manten tu consulta de la forma que tenias originalmente y revisa esto:
http://dev.mysql.com/doc/refman/5.0/...variables.html
Segun la documentacion de MySql debes modificar tu archivo de configuracion de acuerdo a tus necesidades:


Ref. http://dev.mysql.com/doc/refman/5.0/...ne-tuning.html
eso es lo que te he escrito en el mensaje anterior, y lo que busco es una alternativa.
__________________
aste nagusia
  #8 (permalink)  
Antiguo 24/09/2009, 10:00
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Como te mencione anteriormente si deseas hacer una busqueda utilizando Match, Against de manera mas precisa, los parametros deberian usar los operadores + . No he probado con el ejemplo que das pero intenta con "+u2 +one" y modifica tu archivo de configuracion para realizar las busquedas con menos de 3 caracteres. Tines la otra opcion de realizar la busqueda a traves de LIKE %
  #9 (permalink)  
Antiguo 25/09/2009, 15:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Cita:
Iniciado por nonpublic Ver Mensaje
Como te mencione anteriormente si deseas hacer una busqueda utilizando Match, Against de manera mas precisa, los parametros deberian usar los operadores + . No he probado con el ejemplo que das pero intenta con "+u2 +one" y modifica tu archivo de configuracion para realizar las busquedas con menos de 3 caracteres. Tines la otra opcion de realizar la busqueda a traves de LIKE %



hola este texto como lo dicen es para poner en una pagina muscial o para que es... io quiero saber q hago para que salga la letra de la cancion que estoy escuchando... respondanme a [email protected] graccias...
  #10 (permalink)  
Antiguo 30/01/2010, 16:56
Avatar de Squadron  
Fecha de Ingreso: septiembre-2009
Mensajes: 297
Antigüedad: 14 años, 7 meses
Puntos: 11
Pregunta Respuesta: Problema con buscador FULLTEXT (Match, Against...)

Cita:
Iniciado por nonpublic Ver Mensaje
Como te mencione anteriormente si deseas hacer una busqueda utilizando Match, Against de manera mas precisa, los parametros deberian usar los operadores + . No he probado con el ejemplo que das pero intenta con "+u2 +one" y modifica tu archivo de configuracion para realizar las busquedas con menos de 3 caracteres. Tines la otra opcion de realizar la busqueda a traves de LIKE %
Existe forma de aplicar LIKE % ???

Por favor iluminame!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:57.