websearch baseada no grep
[Home]
[Dissertação]
[Biba]
[Linux]
[Conjugue]
[br.ispell]
[axw3]
[uplink]
eu sugiro ir fazendo testes basicos, para ganhar seguranca nos
aspectos principais dos mecanismos de busca. Se voce quiser
experimentar, acho interessante voltar ao grep. Selecione algum
diretorio (vamos supor: /www/htdocs/teste) que contenha paginas
html e faca testes nele da linha de comandos do unix:
$ cd /www/htdocs/teste
$ grep futebol *html
$ grep -i futebol *html
No primeiro caso, voce estara' buscando a palavra "futebol" (em
minusculas) em todas as paginas, e, no segundo, a mesma coisa mas
nao necessariamente em minusculas. Nos dois casos entretanto
estamos buscando uma palavra simples (sem composicoes como em
"campeonato paulista") e sem acentos.
O segundo passo e' fazer um pequeno script que execute o "grep",
pois o servidor web nao pode fazer isso diretamente:
#!/usr/bin/perl
read(STDIN, $incoming, $ENV{'CONTENT_LENGTH'});
$incoming =~ s/%0D//gi;
(@pairs) = split(/&/, $incoming);
foreach (@pairs) {
($name, $value) = split(/=/, $_);
$FORM{$name} .= $value;
}
print "Content-type: text/html\n\n";
print "<html><body><h2>Resultado da Busca:</h2>\n";
if ($FORM{'busca'} ne "") {
open(F,"/usr/bin/grep -i $FORM{'busca'} /www/htdocs/teste/*html|");
print "<ul>\n";
while (<F>) {
s/\</\</g;
s/\>/\>/g;
print "<li>$_";
}
print "</ul>";
}
print "</body></html>\n";
Extraia o script acima do email, remova a tabulacao e salve-o num
arquivo chamado busca.cgi no diretorio de cgis do servidor
web. Voce precisara' tambem torna-lo executavel:
$ chmod 755 busca.cgi
Cheque todos os paths, para ver se estao corretos:
/usr/bin/perl (pode ser que seja /usr/local/bin/perl)
/usr/bin/grep (pode ser que seja /bin/grep)
/www/htdocs/teste/ (troque pelo que voce usou no teste acima)
Voce pode testa-lo manualmente para ver se esta' tudo
certo. Supondo que o diretorio de cgis seja /www/cgi-bin,
bastaria executa-lo na linha de comandos e conferir a saida para
ver se e' gerada alguma mensagem de erro:
$ /www/cgi-bin/busca.cgi
Content-type: text/html
<html><body><h2>Resultado da Busca:</h2>
</body></html>
Agora voce pode ligar esse script com um form, como o que
segue. Basta extrai-lo e coloca-lo num arquivo .html do servidor,
acessa-lo com o netscape e testar:
<html><head><title>busca</title></head>
<body>
<form action=/cgi-bin/busca.cgi method=post>
<INPUT NAME=busca size=50>
<INPUT TYPE=submit VALUE=buscar>
</form></body></html>
Entre outras deficiencias dessa solucao, eu lembraria que, como
antes, voce conseguira' fazer buscas apenas de palavras simples e
sem acentos.