In un portale di news - quindi con molti e crescenti dati registrati nel db - ho inserito una funzione di ricerca interna.
Il codice che ho utilizzato è questo:
Codice PHP:
$arr_txt explode(" "$searchterm);
        
$sql "SELECT * FROM news WHERE ";
        for (
$i=0$i<count($arr_txt); $i++) {
            if (
$i 0) {
                
$sql .= " AND ";
            }
            
$sql .= "(title LIKE '%" $arr_txt[$i] . "%' OR text LIKE '%" $arr_txt[$i] . "%')";
        }
        
$sql .= " ORDER BY date DESC";
        
$result mysql_query($sql);
        
$quanti mysql_num_rows($result);
        if (
$quanti == 0) {
        echo 
"No result!";
        } else {
while (
$row mysql_fetch_array($result)) {
    
$newsid $row["news_id"];
    
$titolo $row["title"];
echo 
"<a href=\"onefeed.php?feed=" $newsid "\">[b]" $titolo "[/b]</a>
"
;

Funziona tutto perfettamente, però i risultati forniti (che possono essere tanti) vengono elencati con l'unico criterio stabilito nella query, ovvero in base alla data di pubblicazione.
Invece, io vorrei poter ottenere - se non proprio un'ordine di rilevanza, che sino all'avvento del web semantico non credo sia possibile... - almeno una divisione tra link in cui la/le parola/e cercata/e sono presenti nel titolo, e quelle in cui sono presenti nel testo.
In subordine, una soluzione potrebbe essere evidenziare i termini cercati nel risultato della ricerca, per cui - se sono presenti nel titolo - si vede, altrimenti, non essendoci alcuna evidenziazione, si deduce che i termini sono presenti nel testo.
Qualche dritta?