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/\</\&lt;/g;
            s/\>/\&gt;/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.