Motore di ricerca con classe full text

searedone

Utente Attivo
11 Giu 2010
508
0
0
please chi mi aiuta .....

Ho trovato una classe di ricerca fulltext lo sistemata con la mia tabella ma non mi restituisce niente... chi mi aiuta please .....

Form cerca

PHP:
<img src="immagini/alt_ristoranti.jpg" width="310" height="79" /> 
<form action='testcercafulltext.php' method='POST'> 

  <input type='text' tabindex='15' name='key' class='input' size="15" > 
<br /> <font color="ff0000" size="2" face="Verdana, Arial, Helvetica, sans-serif"> Esempi di ricerca mirata:</font><br /><font color="006600" size="2" face="Verdana, Arial, Helvetica, sans-serif"> Milano, via montenapoleone<br />Ristorante da Pippo<br />Ristorante vegetariano Roma <br />Ristorante di pesce Como</font><br  /> 
    <input type="image" src="immagini/trova.gif"  value='Cerca'> 

    </form>

testcercafulltext.php

PHP:
<?php 

class Search 
{ 
    #CONFIGURA 
    #Parametri ricerca 
    var $fulltext = "milano,roma,url,via,descrizione,chiave"; 
    var $table = "insegna"; 
    #parametri db 
    var $host = "localhost"; 
    var $password = ""; 
    var $user = ""; 
    var $db = ""; 
    #metodo score -> p in percentuale, f in frazione 
    var $pf = "f"; 
    #FINE CONFIGURAZIONE 
    #NON EDITARE OLTRE QUESTA LINEA 
    var $key; 
    var $conn; 
    var $res; 
    var $total; 
  
        function Search($key) 
        { 
            $this->key = $key; 
        } 
  
        function DbConnectAndSelect() 
        { 
            $this->conn = @mysql_connect($this->host, $this->user, $this->password) or die ("Impossibile stabilire una connessione con il server.<br>MySql risponde: " . mysql_error() . "<br>Il codice errore é:" . mysql_errno()); 
  
            @mysql_select_db($this->db, $this->conn) or die ("Impossibile connettersi al database $this->db.<br>MySql risponde: " . mysql_error() . "<br>Il codice errore é:" . mysql_errno()); 
        } 
  
        function GetResource() 
        { 
            $this->DbConnectAndSelect(); 
            $sql = "SELECT *, MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) AS tot FROM $this->table WHERE MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) ORDER BY tot DESC"; 
            $this->res = mysql_query($sql, $this->conn); 
  
        } 
  
        function CalcScore($tot) 
        { 
            switch($this->pf) 
            { 
                case "f": 
                $key_array = explode(" ", $this->key); 
                $this->total = count($key_array); 
                return $tot . " / " . $this->total; 
                break; 
                case "p": 
                $key_array = explode(" ", $this->key); 
                $this->total = count($key_array); 
                $output = intval($tot / $this->total * 100) . "%"; 
                return $output; 
                break; 
                default: 
                $key_array = explode(" ", $this->key); 
                $this->total = count($key_array); 
                return $tot . " / " . $this->total; 
  
            } 
        } 
  
} 

   
$search = new Search($key); 
$search->GetResource(); 
while ($row = mysql_fetch_array($search->res)) 
{ 
    echo $row['milano,roma,url,via,descrizione,chiave'] . " score: " . $search->CalcScore($row['tot']); 
} 
          



?>

Dunp della tabella ...

PHP:
CREATE TABLE IF NOT EXISTS `insegna` ( 
  `id` int(11) NOT NULL auto_increment, 
  `milano` varchar(255) NOT NULL, 
  `roma` varchar(255) NOT NULL, 
  `url` varchar(255) NOT NULL, 
  `via` varchar(255) NOT NULL, 
  `descrizione` text NOT NULL, 
  `chiave` text NOT NULL, 
  PRIMARY KEY  (`id`), 
  FULLTEXT KEY `milano` (`milano`,`roma`,`url`,`via`,`descrizione`,`chiave`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=29 ; 

-- 
-- Dump dei dati per la tabella `insegna` 
-- 

INSERT INTO `insegna` (`id`, `milano`, `roma`, `url`, `via`, `descrizione`, `chiave`) VALUES 
(27, 'Milano', '', 'www.ristorantedagiulia.it', '', 'Serata particolare e quindi decido di "provare" questo ristorante di cui ... Insomma, un''ottimo riferimento a Milano per il pesce fresco anzi, freschissimo. ...', 'milano Piazza gramsci Ristornate pesce milano milano pesce Ristorante di pesce milano ristorante di pesce a milano Ristorante specialita'' di pesce milano Ristorante specialita'' di pesce a milano Ristorante da Giulia milano milano, piazza gramsci Milano, piazza Gramsci Ristorante da Giulia Ristorante Pesce milano Ristorante di pesce a Milano Ristorante di pesce Milano'), 
(26, 'Milano', '', 'www.shannara.mi.it', '', 'Ristorante rustico ed elegante dove si potranno apprezzare specialità a base di pesce ispirate ai sapori della tradizionale cucina mediterranea esaltate con sempre nuovi accostamenti raffinati e stuzzicanti.\r<br>La nostra specialità è una ricercata selezione di frutti di mare serviti crudi...', 'milano via de andreis Ristornate pesce milano milano pesce Ristorante di pesce milano ristorante di pesce a milano Ristorante specialita'' di pesce milano Ristorante specialita'' di pesce a milano Ristorante shannara milano milano,via de andreis Ristorante shannara Ristorante Pesce milano Ristorante di pesce Milano'), 
(25, '', 'Roma', 'ristorantelebistrot', '', 'ristorante in roma garbatella, Le Bistrot, restaurants, rome, Cucina vegetariana , Piatti francesi....', 'Roma via delle sette chiese Ristornate vegetariano Roma Roma vegetariano Ristorante vegetariano Roma \r\nristorante vegetariano a Roma Ristorante specialita'' vegetariano Roma\r\n Ristorante specialita'' vegetariane Roma Ristorante le Bistrot via margutta Roma Ristorante vegetariano Roma Ristorante Le Bistrot'), 
(23, '', '', 'ww.gattenere.it', '', 'ppippo e brutto come martina', ''), 
(24, '', 'Roma', 'www.ilmarguttavegetariano.it', '', 'Il margutta è il ristorante dove il sapere , il colore e l''arte si sposano perfettamente, tutto servito con personale molto qualificato, siamo a via ...', 'Roma via margutta Ristornate vegetariano Roma Roma vegetariano Ristorante vegetariano Roma \r\nristorante vegetariano a Roma Ristorante specialita'' vegetariano Roma\r\n Ristorante specialita'' vegetariane Roma Ristorante il Margutta via margutta Roma Ristorante vegetariano Roma Ristorante MArgutta'), 
(18, '', '', 'ww.gattenere.it', '', 'Che martina è brutta', ''), 
(19, '', '', 'ww.gattenere.it', '', 'ppippo e brutto come martina', ''), 
(20, '', '', 'ww.gattenere.it', '', 'ppippo e brutto come martina', ''), 
(21, '', '', 'ww.gattenere.it', '', 'ppippo e brutto come martina', ''), 
(22, '', '', 'ww.gattenere.it', '', 'ppippo e brutto come martina', ''), 
(17, 'Milano', '', 'www.ristoranteilnodo.it', '', 'Il nodo è un Ristorante sardo che nasce a Milano nel 1999 in zona di Porta Vittoria, precisamente in via pietro Calvi.\r<br>Venite a provare le nostre specialità di Pesce.', 'Milano, via Pietro Calvi  Ristorante il Nodo Ristorante di pesce milano Il Nodo Ristorante di pesce milano pesce Milano Milano pesce Ristorante il nodo milano ristorante il nodo Milano specialita'' di pesce\r\n'), 
(28, '', 'Roma', 'www.ristoranteginza.com', '', 'Ginza e Ginza Gold | Ristorante Giapponese Roma | \r<br>Ristorante giapponese Ginza: via E. Filiberto 251 - Roma.', 'Roma via Barberini Ristornate giapponese Roma Roma Sushi Ristorante di sushi Roma ristorante di sushi a roma Ristorante specialita'' Sushi Roma Ristorante specialita'' di Sushi a Roma Ristorante Ginza e Ginza Roma,via Barberini Roma, via Barberini Ristorante Ginza e Ginza Ristorante Giapponese Roma Ristorante Sushi Roma Ristorante Giapponese');

Percortesia sto impazzendo qualcuno mi spiega cosa sbaglio ..
 
$search = new Search($key);
$search->GetResource();
while ($row = mysql_fetch_array($search->res))
{
echo $row['milano,roma,url,via,descrizione,chiave'] . " score: " . $search->CalcScore($row['tot']);
}

Secondo me il problema sta qui ..ma non capisco che devo mettere in $row
 

Discussioni simili