- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ordinare risultati per key trovate
-
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!!
-
Non sarebbe molto più semplice implementare una ricerca FULL TEXT?
-
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