Ho un motore di ricarca interna, che utilizza questo codice:
Codice PHP:
if ($searchterm == "") {
echo "<p align=\"left\">Please, specify a criteria for search.</p>";
} else {
$result = mysql_query("SELECT *, MATCH(title) AGAINST('$searchterm' IN BOOLEAN MODE) AS tot FROM news WHERE MATCH(title) AGAINST ('$searchterm' IN BOOLEAN MODE) ORDER BY tot ASC");
$nr = mysql_num_rows($result);
if ($nr!==0) {
echo "[i]<u>Result where the keyword(s) match the news title</u>[/i]
";
while ($row = mysql_fetch_array($result)) {
$newsid = $row["news_id"];
$titolo = $row["title"];
echo "<a href=\"onefeed.php?feed=" . $newsid . "\">[b]" . $titolo . "[/b]</a>
";
}
} else {
echo "[i]<u>No result where the keyword(s) match the news title</u>[/i]
";
}
echo "<hr width=\"100%\" size=\"1\" noshade>";
$result2 = mysql_query("SELECT *, MATCH(text) AGAINST('$searchterm' IN BOOLEAN MODE) AS tot FROM news WHERE MATCH(text) AGAINST ('$searchterm' IN BOOLEAN MODE) ORDER BY tot ASC");
$nr2 = mysql_num_rows($result2);
if ($nr2!==0) {
echo "[i]<u>Result where the keyword(s) match the news text</u>[/i]
";
while ($row2 = mysql_fetch_array($result2)) {
$newsid = $row2["news_id"];
$titolo = $row2["title"];
echo "<a href=\"onefeed.php?feed=" . $newsid . "\">[b]<font color=\"#CC6699\">" . $titolo . "</font>[/b]</a>
";
}
} else {
echo "[i]<u>No result where the keyword(s) match the news text</u>[/i]
";
}
}
echo "<hr width=\"100%\" size=\"1\" noshade>";
Per funzionare, funziona, però i risultati sono a volte imperfetti. Ovvero, se - ad esempio - faccio una ricerca con la parola chiave PICASSO, se tra i titoli delle news ce n'è uno del tipo PICASSO'S DEMOISELLES D'AVIGNON AT 100 (dove quindi, in virtù del genitivo sassone, la parola PICASSO è seguita da un'apostofo ed un'altra lettera, senza spazi) non mi riconosce più il termine.
Poichè il db contiene solo testi in inglese, questa eventualità non è poi così remota, e comunque potrebbe escludere dalla ricerca qualche risultato.
D'altra parte, cercare la keyword anche all'interno di una parola può essere pericoloso, nel senso che può dare risultati indesiderati, se il termine cercato non è molto univoco (penso ad es. ad una ricerca sulla keyword MoMa - il museo di NY - che risultati potrebbe produrre!...).
Probabilmente, poichè il problema è legato prevalentemente al genitivo sassone, occorrerebbe qualcosa in grado di cercare la keyword anche all'interno di una parola, ma solo se questa contiene un apostrofo.
É possibile?
Qualcuno ha suggerimenti da dare?