PHP - Buscador Match Against

   
Vista:
Imágen de perfil de Pablo Daniel

Buscador Match Against

Publicado por Pablo Daniel (6 intervenciones) el 04/01/2013 16:30:50
Hola

Tengo una pagina buscar.php que realiza una búsqueda de artículos en una tabla de una base de datos.
El problema que tengo es con el buscador Match Againt(me busca mas de 1 palabra), no me arroja ningún resultado. Las palabras están en la tabla de la Base de datos, pero me arroja una pagina en blanco.
La tabla yo define con motor MyIsam, porque con InnoDB me salía un error.
He probado muchas veces pero me sigue tirando una pagina en blanco, como si no encontrase la frase, pero las frases están en la tabla.
También he probado el buscador en la consulta de phpMyAdmin y no me encuentra nada(conjunto de valores vacío).
Tengo 2 campos con indices FULLTEXT que son titulo y desarrollo. y un clave primaria llamada referencia.

El codigo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
//cadena de conexion
mysql_connect("localhost","root","");
 
//selecciona base de datos
mysql_select_db("actualizacion");
 
//debo preparar los textos que voy a buscar si la cadena existe
if($_POST["busqueda"]<>''){
    //cuenta el numero de palabras
    $trozos = explode(" ",$_POST["busqueda"]);
    $numero = count($trozos);
    $busqueda = $_POST["busqueda"];
    if($numero == 1){
        //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCCION CON LIKE
        $cadbusca = "SELECT referencia, titulo FROM articulos WHERE desarrollo LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
 
    }elseif($numero > 1){
        //SI HAY UNA FRASE SE UTILIZA EL ALGORITMO DE BUSQUEDA AVANZADO DE MATCH AGAINST.
        //busqueda de frases con mas de una palabra y un algoritmo especializado       
        $cadbusca = "SELECT referencia, titulo , MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
    }
    $result= mysql_query($cadbusca) or die(mysql_error());
    while($row = mysql_fetch_object($result)){
        //mostramos los articulos de los articulos o lo que deseamos...
        $refer = $row->referencia;
        $titulo = $row->titulo;
        echo $refer . " - " . $titulo . "<br>";
    }
}
?>


Me pueden ayudar. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder