Ordinare query sql in base ai risultati di ricerca

_Alexander_

Utente Attivo
19 Giu 2004
44
0
0
www.helpinweb.it
Salve a tutti

Stavo riflettendo su questo post (http://maurizio.mavida.com/2005/10/18/ordinare-i-risultati-di-una-query-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:
// 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> <a href=\"http://www.pippo.net/$riga[0]/$riga[1].htm\">$risultato_tronc</a><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!!
 
Ho utilizzato questa query:
Codice:
$cur = mysql_query ("SELECT *, MATCH(campo1, campo2) AGAINST('+$key1 +$key2' IN BOOLEAN MODE) AS attinenza FROM tabella WHERE MATCH(capo1, campo2) AGAINST('+$key1 +$key2' IN BOOLEAN MODE) ORDER BY attinenza DESC limit $dal,$n");

Ma qualcosa sembra non andare.
La ricerca va a buon fine ma con alcune key non è corretta, come mai?...attendo un vostro prezioso consiglio ;)

Grazie e a presto ;)
 

Discussioni simili