O serviço do Google para o efeito peca no facto de não pesquisar threads mais antigos e porque apresenta resultados incoerentes e repetidos.
Decidi então pegar no AGAINST do MySQL e implementar desde a raiz a pesquisa do site. Estou bastante impressionado a relevância dos resultados apresentados e apenas bastou este código:
$string= $_GET['str'];
$string= mysql_escape_string($string);
$string = explode(" ", $string);
$i=0;
while ($string[$i]!=null){
if (strlen($string[$i])<=2)
$string[$i]=null;
else
$string[$i]=$string[$i]."*";
$i++;
}
$string = implode(" ",$string);
$query= "select id, pid, date, title, message, MATCH
(title,message,contact)AGAINST ('$string') as score from comments
where MATCH(title,message,contact)AGAINST ('$string' IN
BOOLEAN MODE) order by score DESC limit 10;";
if(($result = mysql_query($query)) === FALSE)
die($this->err("search"));
Decidi limitar a dez resultados porque nos testes que fiz encontrei sempre o que pretendia neste intervalo.
Começo a desconfiar que existe aqui inteligência articifial. Por exemplo se eu fizer uma pesquisa por Soulfly, é-nos apresentado em Quarto lugar "I will Refuse" que é realmente uma letra de Soulfly, mas o post em si nada refere em relação a esse facto, será o MySQL conhece a letra? :)