Foros del Web » Programando para Internet » PHP »

como funciona la busqueda con MATCH AGAINST

Estas en el tema de como funciona la busqueda con MATCH AGAINST en el foro de PHP en Foros del Web. necesito crear una busqueda con MATCH AGAINST ya que busco por un nombre completo, como lo hago ayuda gracias....
  #1 (permalink)  
Antiguo 22/08/2007, 14:15
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
como funciona la busqueda con MATCH AGAINST

necesito crear una busqueda con MATCH AGAINST ya que busco por un nombre completo, como lo hago ayuda gracias.
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #2 (permalink)  
Antiguo 22/08/2007, 14:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: como funciona la busqueda con MATCH AGAINST

Puedes leer la documentacion de MySQL al respecto.

Saludos.
  #3 (permalink)  
Antiguo 22/08/2007, 16:24
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: como funciona la busqueda con MATCH AGAINST

el codigo que estoy ocupando para la busqueda es:
Código PHP:
<?
    
include("../config/conexion.php"); 
       
$link conectar(); 

    
$busqueda=$_POST['busqueda'];
    
// 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
        {
            
$cadbusca="SELECT * FROM inventario_computador WHERE 
            empresas LIKE '%$busqueda%' 
            OR departamentos LIKE '%$busqueda%' 
            OR usuario LIKE '%$busqueda%';"
;
        }
        elseif (
$numero>1
        {
            
//Si hay una frase se utiliza el algoritmo de busqueda avanzada de MATCH AGAINST
            //busqueda de frases con mas de una palabra y un algoritmo especializado
            
$cadbusca="SELECT * , 
            MATCH ( empresas, departamentos, usuario ) 
            AGAINST ('$busqueda') 
            AS Score FROM inventario_computador 
            WHERE MATCH ( empresas, departamentos, usuario ) 
            AGAINST ('$busqueda') ORDER BY Score DESC LIMIT 5;"
;
        }
        
$result=mysql_query($cadbusca$link) or die( mysql_error() );
        
$i=1;
        while (
$row mysql_fetch_array($result))
        {
    
            echo 
"<table width='950' align='center' cellspacing='2'>";
            echo 
"<tr bgcolor='#E3E9F1'>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['numero_factura']."</td>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['numero_serie_computador']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['empresas']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['departamentos']."</td>";
            echo 
"<td width='110' class='textarea' align='left'>".$row['realizado_por']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['solicitado_por']."</td>";
            echo 
"<td width='110' class='textarea' align='left'>".$row['usuario']."</td>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['proveedor']."</td>";
            echo 
"<td width='60' class='textarea' align='left'>".$row['marca_computador']."</td>";
            echo 
"<td width='16' class='textarea' align='left'> <a href='../computador/consulta.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/consulta.png' width='11' height='11' border='0' title='CONSULTAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a href='../computador/modificar.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/actualizar.png' width='11' height='11' border='0' title='MODIFICAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a onclick=\"eliminarDato('".$row['numero_factura']."')\"><img src='../imagen/eliminar.png' width='11' height='11' title='ELIMINAR INVENTARIO'></a></td>";  
            echo 
"</tr>";
            echo 
"</tabla>";
        
$i++;
        }
    }
?>
y la base de datos es, tabla (inventario_usuario)
campos (id(key) -> int3, empresas(index fulltext) text20, departamentos(index fulltext) text20, usuarios(index fulltext) text20)
y al buscar (jose monje -> error: Can't find FULLTEXT index matching the column list) y al buscar (jose)todo bien

favor ayudarme gracias
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #4 (permalink)  
Antiguo 22/08/2007, 19:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: como funciona la busqueda con MATCH AGAINST

Te esta diciendo exactamente que una de las columnas que especificaste en tu MATCH no tienen un indice FULLTEXT, necesitas crearlo antes de poder utilizar una busqueda MATCH.. AGAINST.

Saludos.
  #5 (permalink)  
Antiguo 23/08/2007, 07:52
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: como funciona la busqueda con MATCH AGAINST

en la base de datos estan creados como FULLTEXT el campo empresas departamentos usuarios los cuales son los que necesito no entiendo donde puede estar el error en la busqueda favor ayuda llevo 3 dias estacionado en este problema
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #6 (permalink)  
Antiguo 23/08/2007, 07:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: como funciona la busqueda con MATCH AGAINST

Si tus columnas tienen ya el indice FULL TEXT puede ser que tu tabla este daniada o que tu instalacion de MySQL tenga algun problema, si estas seguro que las columnas que estas buscando tienen el indice FULLTEXT te recomiendo entonces que borres la tabla y la vuelvas a crear, y si falla reinstales el servidor de MySQL.

Saludos.
  #7 (permalink)  
Antiguo 23/08/2007, 16:50
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: como funciona la busqueda con MATCH AGAINST

hasta que version se puede ocupar el match againts (appserver, mysql, myadmyn)
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #8 (permalink)  
Antiguo 23/08/2007, 16:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: como funciona la busqueda con MATCH AGAINST

Desde la version 3.23.23 de MySQL, aunque solo se pueden hacer en tablas MyISAM.

Saludos.
  #9 (permalink)  
Antiguo 24/08/2007, 07:01
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: como funciona la busqueda con MATCH AGAINST

yo tengo instalado el appserv-win32-2.4.8 no entiendo por que no me realiza la busqueda, ya no me tira el error: Can't find FULLTEXT index matching the column list) solamente carga pero no busca, por que
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #10 (permalink)  
Antiguo 24/08/2007, 10:08
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: como funciona la busqueda con MATCH AGAINST

en este codigo que es de busqueda realizo una paginacion y al cambiar de pagina me pierde la busqueda como lo puedo hacer
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:02.