53
Motores de busca: Uma nova alternativa para o Aranha Trabalho apresentado na Universidade Federal do Paran´ a para obten¸c˜ ao do grau de Bacharel em Ciˆ encia da Computa¸c˜ ao

Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Embed Size (px)

Citation preview

Page 1: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Motores de busca: Uma nova

alternativa para o Aranha

Trabalho apresentado na

Universidade Federal do Parana para obtencao

do grau de Bacharel em Ciencia da Computacao

Page 2: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Sumario

1 Introducao 3

2 Motores de busca web 5

2.1 Aranha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 Indexador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Interface de pesquisa . . . . . . . . . . . . . . . . . . . . . . . 11

2.5 Ranqueamento de paginas web . . . . . . . . . . . . . . . . . . 12

2.6 Motores de busca distribuıdos . . . . . . . . . . . . . . . . . . 13

2.6.1 Peer-to-peer . . . . . . . . . . . . . . . . . . . . . . . . 15

3 O Nutch 16

3.1 Arquitetura do Nutch . . . . . . . . . . . . . . . . . . . . . . . 17

3.1.1 Banco de dados . . . . . . . . . . . . . . . . . . . . . . 19

3.1.2 Aranha . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Alteracoes realizadas . . . . . . . . . . . . . . . . . . . . . . . 23

3.3 Testes realizados com o Nutch . . . . . . . . . . . . . . . . . . 24

3.3.1 Testes realizados na maquina ]1 . . . . . . . . . . . . . 24

1

Page 3: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

3.3.2 Testes realizados na maquina ]2 . . . . . . . . . . . . . 25

3.3.3 Testes realizados na maquina ]3 . . . . . . . . . . . . . 27

4 Novo modelo para o aranha: O Crab 30

4.1 Protocolo de comunicacao Crab . . . . . . . . . . . . . . . . . 32

4.1.1 Formato da mensagem de requisicao . . . . . . . . . . 33

4.1.2 Formato da mensagem de resposta . . . . . . . . . . . 35

5 Implementacao e Resultados Experimentais 38

5.1 Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.1.1 Ambiente . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.1.2 Plataforma de execucao . . . . . . . . . . . . . . . . . 40

5.2 Resultados Experimentais . . . . . . . . . . . . . . . . . . . . 41

5.2.1 Desempenho do Nutch . . . . . . . . . . . . . . . . . . 41

5.2.2 Desempenho do Crab . . . . . . . . . . . . . . . . . . . 41

5.3 Comparacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6 Conclusao 45

A Alteracoes realizadas no Nutch 47

2

Page 4: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 1

Introducao

A quantidade de informacao contida na web vem sofrendo um crescimento

exponencial desde o seu inıcio. Cada vez mais paginas web, documentos,

imagens, arquivos de audio, entre outros sao disponibilizados na Internet. Se

por um lado a quantidade de informacao na rede aumenta, a dificuldade de

encontrar uma informacao relevante ao assunto desejado tambem.

A partir da necessidade de pesquisar uma informacao na Internet, sur-

gem os motores de busca web (Search Engines), programas que objetivam

principalmente a recuperacao de informacao contida na web

Em 2002, estimava-se que o tamanho da web estivesse entre 66800 e 91800

TB [2]. Se uma pesquisa realizada sobre esta quantidade de dados, em uma

maquina local, ja seria um tanto quanto lenta, na web e facil imaginar que

essa pesquisa seria completamente inviavel. Atualmente, os motores de busca

sao responsaveis por indexar centenas de milhares de paginas web e prover

resultados de forma eficiente.

Os motores de busca web atuais geralmente sao compostos por quatro

3

Page 5: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

partes distintas: o aranha (spider/crawler) que acessa e percorre os sites

seguindo os links encontrados nas paginas, o indexador (indexer) que processa

as paginas obtidas pelo aranha, o banco de dados (database) que armazena as

paginas processadas pelo indexador e a interface de pesquisa (result engine)

que estabelece o canal de comunicacao entre o usuario e o motor de busca.

Este trabalho tem como objetivo oferecer uma nova alternativa para im-

plementacao do aranha. Dado que o funcionamento do aranha e bastante

custoso pois necessita percorrer pagina por pagina na web, a nova alternativa,

chamada Crab, propoe que o aranha seja distribuıdo pela web e permaneca

localizado junto aos servidores web, tirando proveito do acesso a disco e pro-

cessamento local e eliminando assim o alto custo dos aranhas tradicionais.

O Crab nao percorre links. Sua tarefa e analisar e compactar toda a base do

servidor web e aguardar para transferi-la quando o for solicitado.

O restante do trabalho esta organizado da seguinte maneira: o capıtulo 2

faz uma breve introducao a arquitetura dos motores de busca web, o capıtulo

3 apresenta o Nutch [13], um motor de busca web open source, o capıtulo

4 apresenta o Crab, o capıtulo 5 apresenta testes e comparacoes realizados

entre o Crab e o aranha do Nutch e finalmente o capıtulo 6 conclui este

trabalho.

4

Page 6: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 2

Motores de busca web

Os motores de busca web sao programas que visam a recuperacao da in-

formacao contida na web de forma eficiente. Basicamente, sua principal

tarefa e receber como entrada palavras chaves especıficas e gerar como saıda

uma lista de documentos nos quais as palavras chaves foram encontradas.

Para que esta tarefa seja efetuada de forma satisfatoria, um motor de busca

necessita desempenhar diversas funcoes que geralmente sao divididas em qua-

tro partes: o aranha, o indexador, o banco de dados e a interface de pesquisa.

Todas as partes serao detalhadas mais adiante.

A medida que a web foi se tornando cada vez mais complexa e consequen-

temente novos desafios sendo gerados, os motores de busca foram agregando

diversas caracterısticas a sua estrutura, fazendo com que evoluissem cada vez

mais desde o surgimento do Wandex [3], o primeiro motor de busca.

5

Page 7: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

2.1 Aranha

O aranha e responsavel por acessar as paginas web e analisa-las a procura

de links. Seu funcionamento pode ser descrito como um processo cıclico que

inicia-se com uma colecao inicial de URLs (Uniform Resource Locator) a

serem acessadas, resgatando o conteudo das mesmas e armazenando os links

encontrados em uma lista, que sera a base para as novas direcoes que o aranha

ira seguir. Ao comecar a execucao o aranha encontra-se na profundidade

zero, ao recomecar um novo ciclo, a profundidade e incrementada e passa

a valer um e assim sucessivamente. Desta maneira, e possıvel estabelecer

uma analogia do funcionamento do aranha com uma arvore, no qual as URLs

representam os vertices e os links contidos na pagina web e que sao acessados

representam as arestas, como mostra a figura 2.1.

E importante ressaltar que na pratica e inviavel que o aranha percorra

todas as URLs presentes na lista, percorrendo assim toda a web. Se o ara-

nha baixasse uma pagina por segundo (considerando a requisicao HTTP) e

analisasse-a, seriam vasculhadas 86400 paginas por dia. Em um ano seriam

31.536.000 paginas. Como atualmente estima-se que exista 20 bilhoes de

paginas [4], levarıamos algumas centenas de anos para varrer toda a web.

Portanto e necessario que o aranha priorize as paginas mais relevantes

para serem acessadas, o que requer uma metrica de importancia. A im-

portancia de uma pagina e uma funcao de sua qualidade e de sua populari-

dade em termos de links ou visitas.

6

Page 8: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 2.1: Representacao do funcionamento do aranha

O aranha e capaz de analisar diferentes formatos de arquivos (HTML,

PDF, TXT, DOC,...). Quando for acessar uma pagina, o aranha pode fazer

uma requisicao HTTP HEAD [5] para descobrir o formato do arquivo antes

de requisitar a pagina com uma requisicao GET. Desta maneira nao ha tempo

desperdicado obtendo arquivos da web que nao desejam ser indexados. Uma

estrategia similar compara a extensoes das URLs com uma lista de tipos de

paginas web conhecidas (html, asp, aspx, php, jsp, etc).

Alguns aranhas pretendem obter o maximo possıvel de paginas de um

determinado web site. Este incremento no funcionamento do aranha acessa

todos os caminhos em cada URL que o aranha pretende processar. Por exem-

plo, para a URL http://llama.org/hamster/monkey/page.html, sera proces-

sado o /hamster/monkey/, /hamster/ e /. Este incremento e interessante

pois pode encontrar enderecos que normalmente nao podem ser encontrados

pelo processo anterior.

Grande quantidade de paginas web somente sao acessadas submetendo

consultas a banco de dados ou atraves da submissao de informacao ao servidor

7

Page 9: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

web pelo metodo POST [5]. Sao chamadas de paginas dinamicas e escritas

em linguagens de programacao como: PHP, Java, ASP, etc. Torna-se entao

necessario alguns aranhas especializados para acessar e processar tais paginas

web, visto que os aranhas comuns nao sao habeis para essa tarefa pois pode

nao haver links apontando para elas.

2.2 Indexador

O indexador recebe e processa as paginas obtidas pelo aranha. Sua funcao

e destacar cada palavra do site, descartando as mais comuns (por exemplo:

’e’, ’isto’, ’a’, ...). O codigo HTML tambem e examinado e faz com que

ajude o site a ser mais facilmente encontrado em uma futura recuperacao.

Palavras em negrito, italico ou tags de cabecalhos recebem enfase maior, ou

seja, momento no qual e analisada as meta-informacoes inseridas no codigo

HTML do site (palavras chaves e tags de descricao).

Entre os principais tipos de indexadores, o mais utilizado e o ındice inver-

tido (Inverted index). Este e amplamente utilizado por permitir uma rapida

recuperacao dos termos ja indexados. Possui uma estrutura simples com

dois componentes principais: uma lista de termos distintos (term dictionary)

e uma lista de URLs (posting list) que contem o termo.

Adicionalmente, para cada termo distinto, pode ser armazenado a posicao

a qual o termo se encontra (palavra, frase, paragrafo, etc) e um valor que

representa a relevancia do mesmo na pagina web.

Para a construcao do ındice invertido e utilizado o algoritmo 1. Conforme

indica o algoritmo, sao separados todos os termos de cada URL (linha 2),

8

Page 10: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

e isso e feito para todas as URLs encontradas (linha 1). As linhas 3 a 7

verificam se o termo em questao pertence a lista de termos distintos, se

sim, entao nao ha a necessidade de adiciona-lo novamente na lista, portanto

adiciona-se somente a URL na lista de URLs do termo. Caso contrario e

necessario criar um novo campo nas respectivas listas para adicionar o novo

termo e a nova URL.

para cada url U encontrada faca1

para cada termo T na url U faca2

se T ja esta armazenado na lista de termos distintos entao3

adiciona U na lista de urls;4

senao5

adiciona T na lista de termos distintos;6

adiciona U na lista de urls;7

fim8

fim9

fim10

Algoritmo 1: Algoritmo do ındice invertido

Apos processar todas as paginas web, o ındice invertido e armazenado

em mıdia permanente. Fica evidente, entao, que a sua construcao custa caro

em termos de requisitos computacionais, mas uma vez construıdo, e possıvel

extrair resultados de forma eficiente.

A recuperacao de informacao sobre um ındice invertido se da atraves

da interseccao entre a lista de URLs dos ındices armazenados e que foram

atingidos pelos termos de pesquisa. Por exemplo: temos os seguintes termos:

index, search, engine, inverted e as seguintes URLs: X, Y, Z, W, K.

Suponha que ao montar o ındice invertido ficamos com a tabela da figura

2.2:

9

Page 11: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

termos / lista de

urls

index X Y

search W Z K

engine W Z

inverted X Y Z

Figura 2.2: Tabela do indice invertido

Portanto ao efetuarmos uma busca pelos termos “inverted”e “index”,

teremos as URLs X, Y e Z, referente ao termo “inverted”e as URLs X e Y,

referente ao termo “index”. Fazendo a intersecao destas listas obteremos as

URLs X e Y.

2.3 Banco de dados

E armazenado no banco de dados as palavras consideradas importantes

pelo indexador. Ha implementacoes que armazenam tambem o conteudo

da pagina com o intuito de manter um cache dos sites. O banco de dados

dos motores de busca requerem uma quantidade enorme de capacidade de

armazenamento. Se supormos que um motor de busca possui algo em torno

de 3 milhoes de documentos, e tambem assumindo que o tamanho medio de

cada documento em torno de algumas dezenas de kilobytes, isto facilmente

ultrapassa muitos terabytes de dados. O Google[6], por exemplo, possui

aproximadamente 850 TB de dados [8].

10

Page 12: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

2.4 Interface de pesquisa

A interface de pesquisa e o meio de comunicacao entre o usuario e o motor

de busca. E atraves da interface que sao efetuadas as buscas e obtem-se os

resultados, sendo considerada uma das partes mais importantes de um motor

de busca e foco dos maiores esforcos para otimizacao.

As paginas web resultantes de um motor de busca, (Search Engine Results

Page, SERP) retornadas em resposta a uma pesquisa, normalmente incluem

uma lista de paginas web com seus respectivos tıtulos, um link para a pagina,

e uma curta descricao mostrando onde as palavras chaves “casaram”com o

conteudo dentro da pagina. Uma SERP pode referir-se a uma simples pagina

web contendo links, ou a um conjunto de todos os links retornados por uma

busca.

Alguns motores de busca fazem cache de SERPs para as buscas mais

frequentes e exibem o conteudo em cache ao inves de refazer a busca nova-

mente, aumentando assim o desempenho do motor de busca. O motor de

busca atualiza as SERPs periodicamente para contagem das novas paginas e

possivelmente para alterar o ranking das paginas na SERP. As atualizacoes

das SERPs podem levar muitos dias ou semanas o que pode causar uma im-

precisao nos resultados, pois estes podem estar desatualizados e os sites mais

novos estarem completamente ausentes.

As SERPs da maioria dos motores de busca, como Google e Yahoo!, po-

dem incluir diferentes tipos de listagem como: listagens patrocinadas, ima-

gens, mapas, definicoes, ou refinamentos de sugestoes de busca. A maioria

dos sistemas de busca tambem oferecem diversos tipos de busca, tal como

11

Page 13: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

de imagens, notıcias e blogs. As SERPs para estas buscas especializadas

oferecem resultados especıficos.

A interface de pesquisa tambem pode ser responsavel pelo ranqueamento

das paginas. Ela determina as melhoras paginas que “casam”com a busca

feita pelo usuario e em que ordem elas devem ser listadas. Isto sera realizado

de acordo com o algoritmo de ranqueamento que o motor de busca utiliza.

2.5 Ranqueamento de paginas web

Em uma rede como a Internet, na qual o ambiente e completamente hete-

rogeneo, a qualidade e a relevancia da informacao contida na mesma pode va-

riar absurdamente. A partir dessa diversidade torna-se necessario a criacao de

um meio que tenha por funcao filtrar automaticamente os resultados busca-

dos, retornando assim documentos web que estejam o mais proximo possıvel

dentro do escopo da pesquisa. Tem-se inıcio entao o ranking de documentos

web, ou seja, uma pre-avaliacao e posterior qualificacao do documento.

Dentre os metodos mais famosos de ranqueamento esta o PageRank [7]

da Google, que entre outros fatores e um dos responsaveis por tornar o motor

de busca da mesma o mais utilizado da web.

Ao contrario de simplesmente usar o conceito da popularidade do link, o

qual varios tipos de ranqueamento o fazem, o PageRank utiliza um conceito

mais democratico, sendo a classificacao dos documentos web efetuada pela

propria Internet e nao por usuarios. A classificacao se faz atraves do numero

de votos. Um voto nada mais e do que um link, localizado em qualquer lugar

documento web, que aponte diretamente para o determinado documento web.

12

Page 14: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

O PageRank tambem considera que quanto mais alto for a colocacao do

documento web no Ranking, maior o valor do seu voto.

Outros exemplos de otimizacao de motor de busca sao aqueles especi-

alizados em pesquisa de imagens, em pesquisa local (evolucao das paginas

amarelas para a Internet) e pesquisa vertical (motores de busca focalizados

em determinado assunto).

2.6 Motores de busca distribuıdos

Os motores de busca distribuıdos surgem como uma diferente alternativa

para implementacao de motores de busca. O conceito de distribuido em

questao nao necessariamente engloba todo o funcionamento do motor de

busca mas pode abranger somente algumas partes do mesmo, ou seja, pode-

se distribuir apenas o aranha ou o indexador e o banco de dados e assim por

diante. Este conceito pode variar de acordo com cada implementacao.

Existem varias implementacoes disponibilizadas na Internet tais como

YaCy [18], Minerva [19], OpenSearch [20], entre outros. Cada qual com suas

particularidades e vantagens. No entanto, nao ha nenhuma implementacao

que consiga erradicar todos os desafios que um motor de busca necessite

enfrentar. Entre os principais desafios encontrados atualmente estao: au-

mentar a relevancia do conteudo buscado, diminuir a grande latencia na

atualizacao das paginas web ja indexadas, indexar completamente a web e

indexar paginas web dinamicas.

No motor de busca distribuıdo, as tarefas basicas executadas (acessar,

indexar e recuperar paginas web) sao divididas por computadores que podem

13

Page 15: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

estar localizados em qualquer lugar da Internet (peers). Isso gera novas

dificuldades que afetam diretamente o desempenho do motor de busca. As

principais dificuldades encontradas sao:

No aranha: Acessar e processar as paginas web eficientemente no cenario

dinamico da web, visando minimizar a taxa de requisicoes GET aos

servidores web e encontrar peers confiaveis na rede para executarem a

funcao do aranha.

No indexador e no banco de dados: Definir uma maneira efetiva de par-

ticionar o banco de dados de modo que futuras buscas necessitem utili-

zar o menor numero possıvel de particoes para fornecer o maior numero

de documentos relevantes. E necessario tambem definir uma estrategia

para balancear a carga de buscas, redirecionando-as para diferentes

peers.

Na interface de busca: Lidar com problemas de roteamento (geralmente

sao utilizadas DHTs [21] como tabelas de roteamento). Em particular,

com o roteamento de consultas. E importante tambem saber manipular

falhas, como por exemplo: quando um peer encontra-se desconectado.

Para tal sao usadas tecnicas de replicacao, as quais aumentam a dispo-

nibilidade de informacao na rede.

Para estabelecer a comunicacao entre esses peers e utilizada a arquitetura

das redes peer-to-peer[9].

14

Page 16: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

2.6.1 Peer-to-peer

Frequentemente chamada de P2P, consiste em um tipo de rede a qual

cada estacao de trabalho tem capacidades e responsabilidades equivalen-

tes (equipotencia entre os nodos), fazendo com que os peers tenham uma

interacao direta. Podemos caracterizar peer-to-peer como uma classe de

aplicacoes que tomam vantagens de diversos recursos como armazenamento

e conteudo, disponıveis nas mais diversas bordas da Internet. Isto difere das

arquiteturas cliente-servidor, nas quais alguns computadores (servidores) sao

dedicados a servir outros (clientes).

As redes P2P sao sistemas distribıdos tipicamente usados para interligar

uma grande quantidade de nodos (atraves de conexoes ad hoc) capazes de

se auto-organizar dentro da topologia da rede com o intuito de compartilhar

recursos tais como conteudo, capacidade de armazenamento, ciclos de CPU

e largura de banda. E importante ressaltar que elas formam um tipo de rede

virtual (overlay) com suas proprias regras de roteamento, onde sao capazes

de se adaptar a falhas e a populacoes transitorias de nodos enquanto mantem

uma aceitavel conectividade e desempenho, sem o requerimento de intermedio

ou suporte de um servidor ou autoridade global.

15

Page 17: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 3

O Nutch

Nutch e o inıcio de um esforco para implementar um sistema de loca-

lizacao na web com codigo-fonte aberto desenvolvido pela Apache Software

Foundation. Construıdo no topo do Lucene [11], o Nutch aborda todas as

ferramentas que um motor de busca possui, podendo ser utilizado tanto na

Internet quanto em uma Intranet ou ainda no sistema de arquivos local de

um computador. Dentre as suas principais caracterısticas, o Nutch oferece:

transparencia na pesquisa web, suporte a alto trafego de rede e escalabilidade

para bilhoes de paginas.

O Nutch e uma alternativa transparente aos sistemas comerciais de loca-

lizacao na web. Somente os resultados gerados por sistemas de localizacao

feitos com codigo-fonte aberto podem ser inteiramente confiaveis quanto a

nao serem direcionados (ou, ao menos, sua orientacao e publica). Todos os

principais sistemas de localizacao existentes tem formulas de ranking proprias

e nao vao explicar porque foi dado um ranking a um determinado resultado.

Alem disso, alguns sistemas de localizacao determinam em que locais posi-

16

Page 18: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

cionar os resultados baseados mais em pagamentos do que nos meritos deles

mesmos.

3.1 Arquitetura do Nutch

O Nutch divide-se em duas partes: o aranha (crawler) e o buscador (se-

archer). O aranha captura as paginas e as converte em um ındice invertido,

que o buscador usa para responder as consultas realizadas pelos usuarios. A

interface existente entre essas duas partes e o ındice (index ). O buscador

precisa acessar os segmentos descritos abaixo com a finalidade de produzir

os sumarios e fornecer acesso ao cache das paginas.

O ponto principal deste modelo e que os sistemas do aranha e do buscador

podem ser implantados em plataformas separadas. Por exemplo uma pagina

de busca com um alto trafego que fornece pesquisa para um modesto conjunto

de sites pode necessitar apenas de um modesto investimento correspondente

na infraestrutura do aranha, enquanto necessitara mais recursos substanciais

para o buscador.

Como mostra a Figura 3.1, o Nutch utiliza um meio persistente de arma-

zenamento, chamado de webDB, onde o conteudo das paginas sao guardadas,

bem como as listas de busca. A cada atualizacao dos conteudos as listas de

buscas tambem sao atualizadas. Estes conteudos sao utilizados pelos inde-

xadores que irao gerar os ındices invertidos das paginas. Os pesquisadaroes

sao elementos que irao realizar as consultas dentro dos ındices e irao devolver

para o motor de busca o resultado da pesquisa, que na figura em questao esta

representado como o servidor web.

17

Page 19: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 3.1: Arquitetura do Nutch

18

Page 20: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

3.1.1 Banco de dados

O Nutch usa um banco de dados proprio que e dividido nas seguintes

partes:

• Banco de dados do Aranha: Contem informacoes sobre as URLs

conhecidas pelo Nutch.

• Banco de dados de links: Armazena a lista de links conhecidos para

cada URL.

• Banco de dados de indexes: Contem os indexes no formato estabe-

lecido pelo Lucene.

• Segmentos: Um conjunto de subdiretorios cada qual contendo URLs

que sao coletadas como uma unidade, de acordo com um determinado

fator.

3.1.2 Aranha

O sistema do aranha e gerenciado pela ferramenta do Nutch crawl, e uma

famılia de ferramentas relacionadas para construir e manter muitos tipos

de estruturas de dados, incluindo a base de dados web, um conjunto de

segmentos, e o ındice.

A base de dados web, ou webDB, e uma estrutura de dados persistente

especializada para fazer o espelhamento da estrutura e propriedades da web

sendo percorrida. Ela mantem a base enquanto a web esta sendo varrida, (e

varrida novamente), o que pode levar meses ou anos. A base de dados web e

usada apenas pelo aranha e nao realiza nenhum outro papel durante a busca.

19

Page 21: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

A webDB armazena dois tipos de entidades: paginas e links. Uma pagina

representa uma pagina na web, e e indexada por sua URL e o hash MD5

de seu conteudo. Outras informacoes pertinentes tambem sao armazenadas,

sao elas: o numero de links na pagina (tambem chamados de outlinks); in-

formacoes de busca (tal como quando a pagina deve ser buscada novamente);

e o score da pagina, que e uma medida de quanto a pagina e importante (por

exemplo, uma medida de importancia pontua com alto score paginas que sao

ligadas de muitas outras paginas). Um link representa uma ligacao de uma

pagina web (a fonte) para outra (o destino). No grafo da webDB, os nodos

sao paginas e as arestas sao links.

Um segmento e uma colecao de paginas buscadas e indexadas pelo aranha

em uma simples execucao. A lista de busca para um segmento e uma lista

de URLs para o aranha buscar, e e gerada a partir da webDB. A saıda do

buscador e o dado recuperado a partir das paginas na lista de busca. A saıda

do buscador para o segmento e indexado e o ındice e armazenado no seg-

mento. Qualquer segmento tem um ciclo de vida limitado, pois suas paginas

sao buscadas novamente dentro de um intervalo de tempo. O intervalo de

tempo padrao para refazer uma busca e de 30 dias, portanto os segmentos

mais antigos do que isto devem ser apagados, particularmente porque eles

ocupam muito espaco em disco. Os segmentos sao nomeados pela data e

hora em que eles foram criados, por isso e facil ver o quanto eles sao antigos.

O ındice e o ındice invertido de todas as paginas que o sistema recuperou

e e criado pela mesclagem de todos os ındices dos segmentos individualmente.

O Nutch usa o lucene[11] em seu sistema de indexacao, portanto todas as

ferramentas e APIs (Application Programming Interfaces) estao disponıveis

20

Page 22: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

para interagir com o ındice gerado.

Funcionamento do Aranha

A varredura realizada pelo aranha e um processo cıclico: e gerada uma

colecao de listas de buscas a partir da webDB, uma colecao de buscadores

resgata os conteudos das paginas web, o aranha atualiza a webDB com novos

links que foram encontrados e entao gera um novo conjunto de listas de

busca para os links que nao foram capturados ainda em um dado perıodo,

incluindo os novos links encontrados no ciclo anterior e o ciclo se repete.

Este ciclo e frequentemente referido como ciclo gerar/buscar/atualizar e roda

periodicamente tanto quanto se deseje manter o ındice de busca atualizado.

URLs com o mesmo host sao sempre associados a mesma lista de busca.

Isto e feito por razoes de clareza, portanto um site da Internet nao e sobrecar-

regado com requisicoes vindas de multiplos buscadores em rapidas sucessoes.

O Nutch observa o protocolo de exclusao de robos (Robots Exclusion Proto-

col [16]), o que permite que mantenedores controlem quais partes do seu site

podem ser varridas.

A ferramenta do aranha e um front end para outras aplicacoes que rea-

lizam tarefas mais especıficas, portanto e possıvel conseguir os mesmos re-

sultados rodando estas em uma sequencia particular. Abaixo segue uma

discriminacao do que o aranha faz, juntamente com a suas aplicacoes em

baixo nıvel entre parenteses:

1. Criar uma nova webDB (admin db -create).

2. Injetar URLs dentro da webDB (inject).

21

Page 23: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

3. Gerar uma lista de busca a partir da webDB em um novo segmento

(generate).

4. Buscar os conteudos das URLs nas listas de busca (fetch).

5. Atualizar a webDB com os links das paginas buscadas (updatedb).

6. Repetir os passos 3-5 ate que a profundidade desejada seja alcancada.

7. Atualizar os segmentos com os scores e links da webDB (updatesegs).

8. Indexar as paginas buscadas (index ).

9. Eliminar conteudo duplicado (e URLs duplicadas) dos ındices (dedup).

10. Mesclar os ındices em um unico ındice para busca (merge).

Depois de criar uma nova webDB (passo 1), o ciclo gerar/buscar/atualizar

(passos 3-6) e inicializado pelo carregamento da webDB com algumas URLs

sementes (passo 2). Quando este ciclo se completa, o aranha ira criar um

ındice de todos os segmentos (passos 7-10). Cada segmento e indexado inde-

pendentemente (passo 8), antes que paginas duplicadas (isto e, paginas com

URLs diferentes mas com o mesmo conteudo) sejam removidas (passo 9).

Finalmente os ındices individuais sao combinados em um unico ındice (passo

10).

A ferramenta dedup pode remover as URLs duplicadas dos ındices dos

segmentos. Isto nao e para remover multiplas buscas da mesma URL por ela

ter sido duplicada na webDB - este fato nao pode acontecer pois a webDB

nao permite entradas de URLs duplicadas. Ao inves disso, duplicatas podem

surgir se uma URL e buscada e o antigo segmento para a busca previa ainda

22

Page 24: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

coexistir (visto que ainda nao foi apagada). Esta situacao nao pode aparecer

durante uma simples execucao do aranha, mas sim durante a repeticao de

buscas, por isso a ferramenta dedup garante que URLs duplicadas sejam

removidas.

O aranha e um meio de iniciar a varredura de sites na web, porem sera

necessario utilizar as ferramentas de baixo nıvel para repetir buscas e outros

tipos de manutencao nas estruturas de dados construıdas durante a varredura

inicial.

3.2 Alteracoes realizadas

Foram adicionados alguns pontos de controle em alguns pontos no Nutch,

onde registramos o tamanho das requisicoes e das respostas do servidor.

Para capturar o tamanho das respostas foi alterado algumas linhas da classe

“Fetcher”, onde colocamos o tamanho das paginas baixadas juntamente com

o tamanho dos cabecalhos (Figura A.1 do apendice A).

Para capturar o tamanho das requisicoes, modificamos a classe HttpRes-

ponse do plugin httpclient que e responsavel por obter as paginas da web e

que se encontra dentro do pacote protocol-httpclient (Figura A.2 do apendice

A).

Este plugin foi habilitado no arquivo ”nutch-defaults.xml” na secao ”plu-

gin.includes” (Figura A.3 do apendice A).

Criamos um script para automatizacao das tarefas que foram realizadas.

Este script invoca a classe “Crawl”definindo, por parametros, o diretorio

23

Page 25: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

onde se encontra as URLs para injetar nas listas de busca da base, o numero

de threads e o valor para o numero de links por nıvel de profundidade. O

valor padrao para profundidade foi fixado em 10 para a realizacao dos testes.

Apos o termino das tarefas do Nutch, atraves de algumas funcoes, o script

calcula algumas estatısticas, como o total de paginas obtidas, total de paginas

indexadas, total de download, total de upload, tempo de processo, tempo de

indexacao, entre outros.

3.3 Testes realizados com o Nutch

Para efeitos de estudo, realizamos alguns testes de execucao com o Nutch

em tres maquinas diferentes. Escolhemos um conjunto de paginas aleatorio,

retirado do arquivo com diretorios de links do projeto Dmoz [17].

3.3.1 Testes realizados na maquina ]1

O hardware da maquina ]1 e o seguinte:

• AMD Opteron(tm) Processor 242

• Clock 1593.901 MHz

• RAM 4090852KB

Para este conjunto de testes variamos o numero de threads entre 50 e

200. Como resultado dos testes obtivemos os dados que estao representados

na tabela da Figura 3.2. Pode-se constatar que mesmo aumentando em 50 o

numero de threads o tempo diminui em uma media de 15 minutos. O grafico

representado na figura 3.3 demonstra essa variacao.

24

Page 26: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 3.2: Testes realizados na maquina ]1 para 2541 paginas

Figura 3.3: Grafico Threads X Tempo para dados coletados na maquina ]1

3.3.2 Testes realizados na maquina ]2

O hardware da maquina ]2 e o seguinte:

• Intel(R) Xeon(TM)

25

Page 27: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

• Clock 3591.270 MHz

• RAM 4151660KB

Para este conjunto de testes variamos o numero de threads entre 400 e

700. Como resultado dos testes obtivemos os dados que estao representados

na tabela da Figura 3.4. Neste teste o numero de threads foi variado em 100,

e o tempo diminuiu em media 8 minutos para cada variacao. Analogamente

ao teste anterior (Figuras 3.2 e 3.3) houve um ganho muito pequeno no tempo

real da execucao, assim como mostra a figura 3.5.

26

Page 28: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 3.4: Testes realizados na maquina ]2 para 2541 paginas

Figura 3.5: Grafico Threads X Tempo para dados coletados na maquina ]2

3.3.3 Testes realizados na maquina ]3

O hardware da maquina ]3 e o seguinte:

• Intel(R) Xeon(R) CPU E5345

27

Page 29: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

• Clock 2327.606 MHz

• RAM 12460760KB

Para este conjunto de testes utilizamos valores entre 800 e 1100 para o

numero de threads. Os resultados estao representados na tabela da figura 3.6.

Novamente o numero de threads foi variado em 100, porem foram utilizados

valores maiores para que o tempo diminuısse de forma consideravel. O tempo

neste caso diminuiu em media 7 minutos, e novamente uma variacao muito

pequena no tempo foi constatada, assim como mostra o grafico da figura 3.7.

28

Page 30: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 3.6: Testes realizados na maquina ]3 para 2541 paginas

Figura 3.7: Grafico Threads X Tempo para dados coletados na maquina ]3

29

Page 31: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 4

Novo modelo para o aranha: O

Crab

Um motor de busca, geralmente, procura indexar o maximo possıvel de

paginas web em sua base. Os aranhas dos motores de busca sao os res-

ponsaveis pela obtencao das paginas web. Como visto nos capıtulos anterio-

res, esta e uma tarefa que demanda muito tempo. Neste capıtulo propomos

um novo modelo de aranha: O Crab.

O Crab consiste numa arquitetura cliente-servidor, onde o cliente Crab

e um motor de busca e um servidor Crab e um servidor web. O servidor

Crab e um servidor de conteudo de paginas web contidas no servidor web.

Esse servidor fornece todas as paginas do servidor web diretamente para o

cliente Crab. Diferentemente do aranha tradicional, neste modelo, o cliente

nao faz requisicoes HTTP para cada pagina, nem percorre os links contidos

na mesma.

Ao estabelecer contato com um servidor web, o motor de busca encontra-

30

Page 32: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

se em uma das seguinte situacoes: ou e o primeiro contato que ele estabelece

com o servidor web, ou ja conhece o mesmo. No primeiro caso, o motor de

busca recebera todas as paginas disponıveis pelo servidor web. No segundo

caso, recebera apenas as paginas que foram atualizadas desde o ultimo con-

tato.

Visando a diminuicao do tamanho das paginas web a serem transferidas, o

Crab pode tirar proveito do processamento local e compactar toda a base do

servidor web, otimizando assim, a transferencia das paginas web ao motor de

busca. Estatistıcamente, ao ser compactado, um arquivo de texto e reduzido

em ate 80% [22]. Esta reducao do tamanho dos arquivos reduz a taxa de

tranferencia e faz com que o tempo tambem diminua.

A figura 4.1 ilustra um modelo da arquitetura do Crab. Nesta figura estao

representados o motor de busca, o servidor web e os tipos de mensagens de

requisicao e respostas existente entre eles.

31

Page 33: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura 4.1: Arquitetura do Crab.

Discutiremos nas proximas secoes a respeito dos detalhes do protocolo

proposto, bem como detalhes do funcionamento.

4.1 Protocolo de comunicacao Crab

O Crab e um servidor do conteudo das paginas web contidas dentro de

um servidor web. Seu objetivo e fornecer de uma so vez todas as paginas

web que o servidor tem em sua base. E utilizado o modelo cliente-servidor,

como maioria dos protocolos de rede, funcionando atraves de requisicoes

e respostas. As mensagens de requisicoes sao realizadas pelo cliente Crab

(motor de busca). As mensagens de respostas sao enviadas pelo servidor

Crab (servidor web). Estes dois tipos de mensagens sao baseados em um

32

Page 34: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

formato generico definido na RFC 822 [14], que e um padrao para formato

de mensagens de texto e que era o protocolo utilizado para e-mails (antes de

2001) e tambem e um dos protocolos utilizados pelo HTTP.

4.1.1 Formato da mensagem de requisicao

As mensagens consistem de um cabecalho e opcionalmente um corpo. O

cabecalho e formado por simples sequencia de linhas contendo caracteres

ASCII. Cada linha e finalizada pela sequencia dos caracteres CRLF (\r\n).

O cabecalho e separado do corpo atraves de uma linha nula, isto e, sem

precedente a sequencia CRLF

O corpo, pode ser formado por sequencia de caracteres ASCII ou por

uma sequencia binaria (quando as paginas forem compactadas para a trans-

ferencia).

O cabecalho da mensagem de requisicao tem o seguinte formato:

CLIENTE cliente_crab\r\n

CONTATO tipo_de_contato\r\n

FORMATO tipo_formato\r\n

[DATA data_ultimo_contato]\r\n

\r\n

cliente crab: Identificacao do cliente Crab (motor de busca).

tipo de contato: Especifica o tipo de contato que o cliente esta estabele-

cendo com o Crab. O cliente pode estar estabelecendo o primeiro contato com

o servidor (PRIMEIRO) ou estar fazendo um novo contato para atualizar a

sua base (ATUALIZACAO).

33

Page 35: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

tipo formato: Especifica se as paginas web serao transmitidas em formato

de texto puro (TEXTO) ou se serao transmitidas compactadas (ZIP).

data ultimo contato: Especifica a data do ultimo contato estabelecido

pelo cliente com o servidor crab. Esta linha e opcional.

Ao enviar uma mensagem de requisicao, o cliente Crab encontra-se em

uma das seguintes situacoes:

• Primeira tentativa de comunicacao com o servidor web.

• Atualizacao da base de dados.

Na primeira situacao, o cliente nao tem conhecimento das paginas web

que o servidor web possui. Neste primeiro contato, e desejavel que o cliente

obtenha todas as paginas disponıveis neste servidor. Neste caso, o cabecalho

da mensagem de requisicao poderia ser da seguinte forma:

CLIENTE nutch\r\n

CONTATO PRIMEIRO\r\n

FORMATO TEXTO

\r\n

O cliente, ao enviar uma linha nula (dupla sequencia de \r\n) indica que

acabou de transmitir o cabecalho, e neste caso, como se trata de um primeiro

contato, significa que terminou de transmitir e agora espera a resposta do

servidor.

Na segunda situacao, o cliente ja possui conhecimento das paginas web

que encontram-se no servidor. Buscando otimizar, o cliente pode passar ao

servidor algumas informacoes das paginas que ja estao armazenadas em sua

34

Page 36: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

base de dados. Passando o nome, a data e a hora em que a pagina foi obtida,

o cliente recebera somente as paginas que possuem atualizacao mais recente

que a data passada. Neste caso o a mensagem poderia ser da seguinte forma:

CLIENTE nutch\r\n

CONTATO ATUALIZACAO\r\n

FORMATO ZIP\r\n

DATA <2008/03/10>

\r\n

www.youse.com.br <2008/03/03><13:10>\r\n

www.youse.com.br/contatos.html <2008/03/05><15:57>\r\n

www.youse.com.br/empresa.html <2008/03/04><17:21>\r\n

.*

\r\n

O cliente, ao enviar a primeira linha nula (dupla sequencia de \r\n) indica

que acabou de transmitir o cabecalho. Neste caso, o cabecalho indica que

esta e uma mensagem de atualizacao. Neste tipo de mensagem o cliente deve

enviar o corpo da mensagem. Este contera uma lista das paginas ja obtidas

pelo cliente junto ao servidor Crab. Ao enviar uma linha nula no corpo

da mensagem, o cliente indica que terminou de transmitir e agora espera a

resposta do servidor.

4.1.2 Formato da mensagem de resposta

O Crab pode receber dois tipos de mensagens de requisicao: A de primeiro

contato e a de atualizacao de conteudo. Na mensagem de primeiro contato,

35

Page 37: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

o cliente se identifica, avisa que e o primeiro contato e especifica o formato

do corpo da resposta. O Crab entao deve transmitir ao cliente todos os sites

que possui no momento, com excecao das paginas identificadas nos arquivos

robots.txt de cada site.

Na mensagem atualizacao de conteudo, o cliente se identifica, avisa que

quer atualizar a sua base, especifica o formato do corpo da resposta e passa

uma lista das paginas conhecidas junto com a data e a hora em que recebeu

cada arquivo. O Crab entao deve transmitir ao cliente apenas as paginas

que tiverem data de atualizacao mais recente do que a data passada pelo

cliente e as paginas com data de criacao mais recente do que a da ultima

comunicacao.

O formato do cabecalho da resposta e igual para os dois tipos de mensa-

gens de resposta.

HI cliente_crab\r\n

SITES total_sites\r\n

PAGINAS total_paginas\r\n

TAMANHO total_bytes\r\n

\r\n

No corpo da mensagem o servidor Crab transmitira as paginas web para

o cliente. Para cada pagina a ser transferida deve ser especificado o host,

a referencia (dentro do host) e o tamanho do conteudo da pagina. Logo

em seguida e transferido o conteudo da pagina web. Este deve seguir a

especificacao de formato que o cliente informou (texto puro ou zip).

O formato do corpo da mensagem entao e:

36

Page 38: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

HOST endereco_host\r\n

HREF: pagina_html\r\n

TAMANHO: tamanho_pagina\r\n

conteudo_da_pagina_no_formato_escolhido\r\n

{repete a estrutura de transmiss~ao da pagina ate acabar as

paginas}

\r\n

Ao enviar uma linha nula, que esteja fora do conteudo das paginas, o

servidor Crab indica que acabou de transmitir. O cliente sabera quando isso

vai ocorrer, pois lhe foi informado no cabecalho da resposta o total de sites,

paginas e o total de bytes. Ao finalizar o corpo da mensagem a conexao e

encerrada.

37

Page 39: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 5

Implementacao e Resultados

Experimentais

Neste capıtulo comparamos um motor de busca tradicional (que utiliza o

aranha) com um motor de busca utilizando o Crab. Descrevemos como foi a

implementacao, a elaboracao dos testes e os resultados obtidos.

5.1 Implementacao

Para o funcionamento do Crab e necessario que tanto um servidor web

quando um motor de busca, implementem o protoclo de comunicacao do

Crab.

Para o servidor web, desenvolvemos um modulo para o Apache que im-

plemente este protocolo. O Apache foi o escolhido por ser um servidor web

open source, robusto, popular e principalmente por sua extensibilidade dada

pelo desenvolvimento de modulos.

38

Page 40: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Sendo um modulo do Apache, o modulo Crab possui acesso as confi-

guracoes locais e livre navegacao pelos diretorios onde estao contidas as

paginas web do servidor Apache. Com isso, o modulo Crab tem a informacao

necessaria para a montar o protocolo de comunicacao. E importante salien-

tar que o modulo Crab, ao menos nesta primeira implementacao, somente

transfere as paginas web estaticas.

Para o motor de busca, desenvolvemos um modulo para o Nutch que

implementa o protocolo de comunicacao do Crab. Este modulo e executado

de maneira similar ao aranha do Nutch, porem deve-se especificar o endereco

de um servidor web, ao inves de uma lista de URLs.

5.1.1 Ambiente

No ambiente para a execucao dos testes, um servidor apache foi prepa-

rado e configurado com o modulo Crab. Para criar uma base de paginas a

serem indexadas, foi desenvolvido o programa GERPA. Este gera paginas

HTML com base num dicionario de palavras (arquivo de palavras do Open

Office - portugues-Brasil). O GERPA gera um site com base nos seguintes

parametros:

• Numero de links por pagina

• Profundidade a partir da primeira pagina

• Numero de bytes mınimo para uma pagina

• Numero de bytes maximo para uma pagina

39

Page 41: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Sites f2a10 f3a7 f3a8 f4a6 f5a5 f6a5

NoLinks 2 3 3 4 5 6Altura 10 7 8 6 5 5Mınimo 4kb 4kb 4kb 4kb 4kb 4kbMaximo 30kb 30kb 30kb 30kb 30kb 30kbTotalpaginas.

2047 3280 9841 5461 3906 9331

Total de paginas no servidor Apache: 33866Tamanho total das paginas: 589MB

Figura 5.1: Sites gerados pelo programa GERPA

O GERPA cria uma arvore com base nos 2 primeiros parametros. O

numero de links por pagina e o numero de filhos por no da arvore, e a

profundidade e a altura desta. Para cada no nesta arvore e gerado uma

pagina com tamanho entre os dois ultimos parametros. A ligacao existente

entre os nos das arvores e convertida entre ligacoes entre as paginas web.

Para o ambiente de execucao foram criados 6 sites com parametros con-

forme a tabela 5.1.1.

Cada site criado foi configurado como um host virtual dentro do Apache.

A estrutura dos sites e das paginas criadas atraves do GERPA, permitem que

o Crawl do Nutch consiga encontrar todas as paginas pertencentes a cada

site.

5.1.2 Plataforma de execucao

Os clientes Nutch e o servidor Crab foram executados em maquinas dentro

de uma Intranet, com link dedicado a 100Mb/s.

Configuracao da maquina do servidor:

• AMD AthlonXP 2400

40

Page 42: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

• 512 MB RAM

• HD SEAGATE 5400RPM

Configuracao da maquina do Nutch:

• Intel Centrino Core 2 Duo

• 2 GB RAM

• HD 5400RPM

5.2 Resultados Experimentais

5.2.1 Desempenho do Nutch

O Crawl do Nutch foi executado com AggressiveHeap (opcao do java para

melhor utilizacao dos recursos computacionas em processos de longa execucao),

100 threads, profundidade maxima 10 e limite de nıvel 10000. A tabela 5.2

mostra os resultados obtidos na execucao do Nutch. Na execucao 1 o timeout

(tempo de espera por uma pagina) do Crawl foi de 10 segundos. Na execucao

2, o tempo de timeout foi de 300 segundos (o mesmo tempo de timeout do

Apache). A diferenca dos ajustes dos valores do timeout tinha o objetivo de

fazer com que o aranha do Nutch buscasse todas as paginas disponıveis no

servidor. So que isto custou mais do que o dobro dos tempos medidos.

5.2.2 Desempenho do Crab

O Crab integrado ao Nutch foi executado de duas maneiras: uma obtendo

as paginas em formato texto e outra obtendo as paginas compactadas. Para

41

Page 43: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Execucao 1 2Tempo Real 19:27.96 40:05.46Tempo Usuario 1003.41 s 2309.44 sTempo Sistema 192.76 s 430.07 sTempo Processo 1167.96 s 2405.46 sPorcentagem de CPU 102% 113%Total Download 562MB 620MBTotal indexadas 32842 32842Total paginas 32842 36264

Tempo para buscar 642 seg 1283 segTempo para indexar 488 seg 1042 segTempo para dedup 8 seg 11 segTempo para merge 15 seg 30 seg

*Medidas em tempo real.

Figura 5.2: Resultados obtidos. Nutch com 100 threads.

cada uma delas, realizamos 3 processos de testes. A tabela 5.3 mostra os

resultados obtidos obtendo as paginas em formato texto. A tabela 5.4 mostra

os resultados obtidos obtendo as paginas compactadas.

5.3 Comparacao

Com base nos testes realizados podemos observar a vantagem do Crab

em relacao ao aranha tradicional. Nas execucoes do aranha, observamos

que o mesmo nao conseguiu obter o mesmo numero de paginas web que o

Crab, embora os sites gerados atraves do GERPA fossem adequados aos

seus parametros de execucao. Houve uma grande diferenca de execucao ao

aumentarmos o tempo de time out para o mesmo valor do time out do Apa-

che. Aumentamos esse valor com o intuito de forcar o aranha tradicional a

conseguir obter o mesmo numero de paginas web que o Crab.

42

Page 44: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Execucao 1 2 3Tempo Real 6:05.70 6:08.02 5:32.36Tempo Usuario 111.38 s 111.41 s 111.45 sTempo Sistema 24.47 s 24.84 s 25.25 sTroca de Contexto Invo-luntaria

33299 48389 34550

Troca de Contexto Vo-luntaria

50410 49487 49678

Tempo Processo 365.70 s 368.02 s 332.36 sPorcentagem de CPU 37% 37% 41%Total Download 567,98MB 567,98MB 567,98MBTotal Paginas 33866 33866 33866

Figura 5.3: Resultados obtidos. Crab com transferencia em formato TEXTO.

Execucao 1 2 3Tempo Real 8:04.30 7:34.87 7:34.55Tempo Usuario 47.82 s 79.74 s 78.98 sTempo Sistema 22.16 s 19.63 s 19.02 sTroca de Contexto Invo-luntaria

24382 9065 16222

Troca de Contexto Vo-luntaria

49473 90657 90424

Tempo Processo 484.76 s 454.87 s 454.55 sPorcentagem de CPU 8% 21% 21%Total Download 229,75MB 229,75MB 229,75MBTotal Paginas 33866 33866 33866

Figura 5.4: Resultados obtidos. Crab com transferencia em formato ZIP.

43

Page 45: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

No melhor caso de teste obtido com o aranha tradicional, o tempo de

usuario foi 9 vezes e o tempo de sistema foi 7,87 vezes maior se comparado

ao pior caso de teste obtido com o Crab sem compressao das paginas.

Podemos observar ainda que, utilizando o Crab com compressao, conse-

guimos reduzir ainda mais os tempos de usuario e de sistema e a quantidade

de bytes transferidos foi reduzida em 60%.

44

Page 46: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Capıtulo 6

Conclusao

Vimos neste trabalho que os motores de busca web sao de extrema im-

portancia atualmente, pois sem eles, dificilmente encontrarıamos alguma in-

formacao relevante na web. Vimos tambem que apesar dos motores de busca

prover a recuperacao da informacao eficientemente, ha varios desafios a serem

enfrentados.

O aranha, que e uma parte do motor de busca, tem a funcao de percorrer

pagina por pagina contida na web, afim de acessa-las a procura de links e

obter seu conteudo. Vimos que esse processo e bastante custoso, pois para

o aranha conseguir percorrer toda a web, levaria algumas centenas de anos.

Por isso o aranha precisa priorizar as URLs que serao acessadas, utilizando

metricas como qualidade e populariedade em termos de visitas para as URLs.

Foi proposto entao o Crab, sugerindo uma nova alternativa para o aranha.

O Crab tem a proposta de funcionamento completamente diferente dos

aranhas comuns. Este descentraliza o trabalho do aranha, dividindo-o entre

o motor de busca e o servidor web. Sua arquitetura e cliente-servidor, onde

45

Page 47: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

o servidor sao os servidores web e os clientes, os motores de busca. Possui

protocolo de comunicacao proprio e, na implementacao realizada ficou limi-

tado a transferir somente as paginas web estaticas. Paginas dinamicas, pdf,

arquivos de audio e video ainda nao sao suportados. Alem de suportar estes

formatos, como um trabalho futuro, podemos sugerir que o o Crab classifi-

que as paginas do servidor Web pelo numero de visitas que recebe, auxiliando

assim o ranqueamento de paginas.

Foram executados testes em ambiente fechado que mostraram a eficiencia

do Crab perante aos aranhas tradicionais. Em alguns casos o Crab chegou

a ser 9 vezes mais eficiente que um motor de busca tradicional. Outro dife-

rencial e a possıvel diminuicao da quantidade de bytes transferidos. O Crab

com transferencia em modo ZIP, reduziu em 60% a quantidade de bytes

transferidos.

Embora nos motores de buscas modernos, os aranhas sejam extrema-

mente otimizados e executados em clusters cada vez maiores, acreditamos

que o modelo do Crab proporcionaria vantagens aos motores de buscas, como

a indexacao de mais sites, reducao de carga nos servidores web e consequen-

temente reducao na transferencia de bytes.

46

Page 48: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Apendice A

Alteracoes realizadas no Nutch

Figura A.1: Alteracoes do arquivo Fetcher.java

47

Page 49: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura A.2: Alteracoes realizadas no arquivo HttpResponse.java do plugin

HttpClient

48

Page 50: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Figura A.3: Alteracoes no arquivo de configuracoes do Nutch.

49

Page 51: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

Referencias Bibliograficas

[1] Ian Foster and Carl Kesselman (eds), The Grid: Blueprint for a New

Computing Infrastructure, Morgan Kaufmann, July 1998. ISBN 1-55860-

475-8.

[2] SIMS, 2003, http://www2.sims.berkeley.edu/research/projects/how-

much-info-2003/internet.htm

[3] SELF SEO, 2006, http://www.selfseo.com/story-18951.php

[4] IEEE Computer society, 2006, http://www.computer.org/portal/site/

computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&p

Name=computer level1 article&TheCat=1055&path=computer/homep

age/0606&file=thingswork.xml&xsl=article.xsl&;jsessionid=GxXRG9L

BQ30yFn36Pq73g9NT2F2JbWj2psKYXHK2rDQZy3gW6C15!1483256709

[5] HTTP/1.1 Method definitions, http://www.w3.org/Protocols/rfc2616/rfc2

616-sec9.html

[6] How much data does Google store?, www.google.com

[7] Google PageRank, http://pr.efactory.de/

50

Page 52: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

[8] How much data does Google store?,

http://googlesystem.blogspot.com/2006/09/how-much-data-does-

google-store.html

[9] A Survey of Peer-To-Peer Content Distribution Technologies, 2004,

STEPHANOS ANDROUTSELLIS-THEOTOKIS AND DIOMIDIS SPI-

NELLIS, Athens University of Economics and Business

[10] Analise de trafego P2P no Backbone da RNP, Simposio brasileiro de

redes, Stenio F. L. Fernandes, Guthemberg S. Silvestre, Kelvin L. Dias,

Joao B. Rocha Jr., Djamel Sadok, Carlos Kamienski1

[11] Apache - Lucene http://lucene.apache.org/

[12] http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-

1.html

[13] http://lucene.apache.org/nutch/

[14] Standard for ARPA Internet Text Messages -

http://tools.ietf.org/html/rfc822

[15] Desafios a recuperacao de informacao dis-

tribuıda http://www.dcc.uchile.cl/ ccas-

till/papers/baeza 2007 challenges distributed information retrieval.pdf

[16] Robots Exclusion Protocol

http://www.robotstxt.org/wc/exclusion.html

[17] ODP - Open Directory Project http://www.dmoz.org/

51

Page 53: Motores de busca: Uma nova alternativa para o Aranha · uma lista de documentos nos quais as palavras chaves foram encontradas. ... S~ao chamadas de p aginas din^amicas e escritas

[18] YaCy http://yacy.net/

[19] The Minerva Project

http://www.mpi-inf.mpg.de/departments/d5/software/minerva/index.html

[20] Open Search http://www.opensearch.org/Home

[21] Distributed Hash Tables http://www.linuxjournal.com/article/6797

[22] HTTP Compression

http://www.websiteoptimization.com/speed/tweak/compress/

52