• User

    MySQL - Ricerca Full-Text

    Ciao a tutti :gthi:!
    Seguendo un tutorial di un sito web ho tentato di fare un piccolo motore di ricerca per il mio database prendendo spunto dalla seguente query di esempio dal sito:```
    SELECT *, MATCH(indirizzo, nome, descrizione) AGAINST('milano') AS attinenza FROM locali WHERE MATCH(indirizzo, nome, descrizione) AGAINST('milano') ORDER BY attinenza DESC

    Ne riporto la pagina "search.php":
    
    

    <?php
    ob_start();

    function stripScriptTags($string) {
    $string=ereg_replace("<!--", "<!--", $string);
    $string=ereg_replace("<", "<", $string);
    $string=ereg_replace(">", ">", $string);
    $string=ereg_replace("-->", "-->", $string);
    $string=ereg_replace("=", "&#61", $string);
    $string=ereg_replace(""", """, $string);
    $string=ereg_replace("'", "'", $string);
    return $string;
    }

    include "connect.php";

    $query = "SELECT *, MATCH(nome , desc , tags , user) AGAINST('".stripScriptTags($_POST['search'])."')
    AS attinenza FROM application WHERE MATCH(nome , desc , tags , user)
    AGAINST('".stripScriptTags($_POST['search'])."') ORDER BY attinenza DESC ";

    $results = mysql_query($query) or die (mysql_error());

    while ($row = mysql_fetch_array($results))
    {
    extract ($row);

    echo "$nome <br>";

    }

    ?>

    Non capisco quale sia il problema! Mi aiutate?
    
    Questo è per un sito che sto programmando per la condivisione di codice online opensource gratis (ovviamente), non vorrei che qualcuno pensasse che chieda aiuto a mio profitto. Grazie :wink3:

  • User

    Quando ti trovi in una situazione come questa, per prima cosa fai un echo di $query per debug, e quarda la query generata dallo script.
    Magari postala che la vediamo insieme.

    Intanto, sei sicuro che fulltext sia abilitato e gli indici siano creati correttamente?


  • User

    @sydarex said:

    Quando ti trovi in una situazione come questa, per prima cosa fai un echo di $query per debug, e quarda la query generata dallo script.
    Magari postala che la vediamo insieme.

    Intanto, sei sicuro che fulltext sia abilitato e gli indici siano creati correttamente?
    Questa è la query ottenuta:

    SELECT *, MATCH(nome , desc , tags , user) AGAINST('ciao') AS attinenza FROM application WHERE MATCH(nome , desc , tags , user) AGAINST('ciao') ORDER BY attinenza DESC
    

    e la tabella è composta dalle seguenti colonne:
    "id nome desc tags number user"


  • User

    Sicuro di aver creato correttamente gli indici Fulltext?


  • User

    @sydarex said:

    Sicuro di aver creato correttamente gli indici Fulltext?
    Credo di sì! Su phpmyadmin ho selezionato quelle 4 colonne ed ho cliccato su "Se selezionate --> Full Text (Testo Completo)"


  • User

    @sydarex said:

    Sicuro di aver creato correttamente gli indici Fulltext?
    Credo di aver capito! Infatti una colonna si chiama "desc" proprio come la funzione "DESC". E' lì che avviene l'errore,viene frainteso. Devo mettere desc fra "": desc` giusto?


  • User

    Problema risolto!


  • User

    @rikicecchi said:

    Credo di aver capito! Infatti una colonna si chiama "desc" proprio come la funzione "DESC". E' lì che avviene l'errore,viene frainteso. Devo mettere desc fra "": desc` giusto?
    Grazie di tutto, ho risolto il problema 😉