• User

    Ordinare risultati per key trovate

    Salve a tutti
    Stavo riflettendo su un problema, dovrei fare un piccolo motore di ricerca in cui vorrei disporre i risultati per numero di key trovate (sommando campo titolo e contenuto).
    Il modulo ricerca è concluso, mi servirebbe però capire come è meglio procedere per ordinare i risultati per numero di key trovate.
    Vi allego la parte del codice che genera i risultati e possibilmente dovrei cercare di trovare il metodo per ordinare la query in base a tali risultati, in ordine discendente.

    // INIZIO Calcolo percetuale chiavi di ricerca trovate //
    $cur = mysql_query ("SELECT * FROM testi WHERE testo LIKE '%$scelta_key%' ORDER by id DESC limit $dal,$n");
    while($riga = mysql_fetch_row($cur))
    {
        $array[1]=conta($riga[12], $scelta_key);
     echo "<br>Occorrenze: $array[1] - percentuale: ";
     $arrayrapporto[1]=$array[1]/$cont;
     $arraypercent[1]=$arrayrapporto[1]*100;
     echo "$arraypercent[1]% - ";
     
     // Calcolo tacche livello percentuale //
     $tacche = ($arraypercent[1]*10)/100;
     //echo "Tacche (arrotondate per eccesso di 1 unita'): $tacche";
     echo "Livello percentuale: ";
     for ( $i = 0; $i <= $tacche; $i++) {
     echo "<img src='/immagini/tacchetta.gif'>";
     }
    }
    // FINE Calcolo percetuale chiavi di ricerca trovate //
     $cur = mysql_query ("SELECT * FROM testi WHERE titolocat LIKE '%$scelta_categoria%' AND testo LIKE '%$scelta_key%' ORDER by id DESC limit $dal,$n");
     
     $conteggio_record = mysql_num_rows($cur);
     if($conteggio_record!=""){
      echo "<table align='center'><tr><td>Trovate <b>$quanti</b> pagine</td></tr></table>";
      while($riga = mysql_fetch_row($cur))
      {
    if($rigas==1){echo "<tr><td><img src=\"/immagini/space.gif\"></td>";}
    // Utilizzo regex per eliminazione codice zoom immagine in finestra popup //
    $risultato_text = preg_replace ( "#afficheVignette\(\".+?\"\)\;#is", "", $riga[12] );
    // Chiamata funzione troncatesto //
    $risultato_tronc = troncaTesto($risultato_text, 240);
    // Stampa risultati chiavi ricercate //
    echo "<br><b>Titolo:</b> $riga[6]<br>";
    echo "<b>Categoria:</b> $riga[2]<br>";
    echo "<b>Testo:</b> $risultato_tronc <br>";
    if($rigas==2){echo "</tr>\n";$rigas=0;}
    $rigas++;$volteeseguito++;
              }
    if($quantevolte%2!=0)$quantevolte++;
    $da_eseguire = $quantevolte-$volteeseguito;
    for($i=0;$i<$da_eseguire;$i++){
    echo "</td>\n";
    if($da_eseguire-$i==1){echo "</tr>\n";}
             }
    echo "</table>\n";
    ///////////// DISEGNO TABELLE CON FOTO FINE
     echo "<table align=\"center\"><tr><td>$paginazione</td></tr></table>";          
           }else {
            echo "Non ci sono risultati";
            echo "<p><a href='mod-ricerca.php'>Ritorna al modulo di ricerca</a></p>";
            echo "<div id=\"layer3\" style=\"width:790px; height:32px; position:absolute; left:428px; top:658px; z-index:1;\"><table><tr><td></td></tr></table></div>";
             }
    }else
    {echo "<p>Non hai inserito alcuna parola o la chiave non ha un valore corretto</p>";
    echo "<p><a href='mod-ricerca.php'>Ritorna al modulo di ricerca</a></p>";
    }
    

    Gentilmente riusciresti a darmi una mano?
    Grazie mille e buona giornata.
    A presto!!


  • User Attivo

    Non sarebbe molto più semplice implementare una ricerca FULL TEXT?


  • User

    Ho provato con la ricerca full text, come suggerito ma non sembra esortire l'effetto desiderato su più key, forse sbaglio qualcosa, ecco il codice:
    [PHP]SELECT *, MATCH(campo_1, campo_2) AGAINST('+$key1 +$key2' IN BOOLEAN MODE) AS attinenza FROM tabella WHERE MATCH(campo_1, campo_2) AGAINST('+$key1 +$key2' IN BOOLEAN MODE) ORDER BY attinenza DESC limit $dal,$n"[/PHP]

    Grazie e a presto 😉