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:
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.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>
";
}
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?