Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ordinare risultati in base al numero delle key trovate

    Salve a tutti

    Stavo riflettendo su questo post (http://maurizio.mavida.com/2005/10/1...per-rilevanza/) e dovrei fare qualcosa del genere sul mio 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.

    Codice PHP:
    // 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 
    "
    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]/immagini/tacchetta.gif[/img]";
        }
    }
    // 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_text240);

    // Stampa risultati chiavi ricercate //
    echo "
    [b]Titolo:[/b] 
    $riga[6]
    "
    ;
    echo 
    "[b]Categoria:[/b] $riga[2]
    "
    ;
    echo 
    "[b]Testo:[/b] <a href=\"http://www.pippo.net/$riga[0]/$riga[1].htm\">$risultato_tronc</a>
    "
    ;

    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 
    "

    [url='mod-ricerca.php']Ritorna al modulo di ricerca[/url]</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 
    "

    Non hai inserito alcuna parola o la chiave non ha un valore corretto</p>"
    ;
    echo 
    "

    [url='mod-ricerca.php']Ritorna al modulo di ricerca[/url]</p>"
    ;


    Gentilmente riusciresti a darmi una mano?

    Grazie mille e buona giornata.

    A presto!!
    News In Web - il social news per tutti
    --> https://www.newsinweb.net <--

  2. #2
    Non sarebbe molto più semplice implementare una ricerca full text, magari pesata a seconda del campo (es. più valore al titolo, etc)?

  3. #3
    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:

    Codice PHP:
    SELECT *, MATCH(campo_1campo_2AGAINST('+$key1 +$key2' IN BOOLEAN MODE) AS attinenza FROM tabella WHERE MATCH(campo_1campo_2AGAINST('+$key1 +$key2' IN BOOLEAN MODEORDER BY attinenza DESC limit $dal,$n


    Grazie e a presto
    News In Web - il social news per tutti
    --> https://www.newsinweb.net <--

  4. #4
    Salve a tutti,
    ho fatto altre prove ma non sembrano andare a buon fine, almeno con alcune key.

    La query a votro avviso è corretta?...penso di si, ma attendo gentilmente un consiglio.

    A presto
    News In Web - il social news per tutti
    --> https://www.newsinweb.net <--

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.