quarta-feira, 17 de outubro de 2007

Como funciona uma máquina de busca? - Crawlers/Spiders/Robôs/Coletores

Leia também as outras partes da série:

Primeira parte: Como funciona uma Máquina de Busca?
Terceira parte: Como funciona a Indexação em uma máquina de busca?
Quarta parte: Como funciona uma Máquina de Busca? - Processador de Consultas


Continuando a série de artigos, neste vou mostrar o funcionamento básico e algumas coisas interessantes sobre os coletores das máquinas de busca.

Sem mais delongas:

Coletor, Spider, Crawler, Robôs

Sim, todos os termos acima se referem a mesma coisa: A parte da máquina de busca responsável por coletar os documentos da Web a serem indexados e consultados posteriormente. Mas como eles funcionam? Os coletores começam com um conjunto inicial de URLs para serem visitadas. O sistema então baixa estes documentos e deles extrai os links, conteúdo e outras informações. As URLs dos links extraídos são guardadas para que se possa acessá-las posteriormente. O processo é mostrado na figura abaixo:

Funcionamento genérico de um Coletor/Spider/Crawler

Para que tudo isso funcione o processo todo é dividido em partes (componentes):

  • Coletores - Fazem a requisição de páginas aos servidores HTTP. Extraem os links das páginas recebidas e enviam ao escalonador. Requisitam do escalonador uma ou mais URLs a serem coletadas.
  • Servidor de Armazenamento - Recebem os documentos coletados e os armazena localmente. Fazem a extração (também chamado de parsing) do texto e conteúdo em outros formatos: PDF, Word, Powerpoint, etc.
  • Servidor de Nomes - Faz um controle das requisições DNS (Domain Name System) para que os coletores não façam requisições remotas. Em outras palavras não deixa o coletor procurar onde está um site se o Servidor de Nomes já tem guardado essa informação.
  • Escalonador - Responsável por decidir qual a próxima URL a ser coletada. Coordenando dessa forma a ação dos coletores. Deve garantir que não haverão coletas repetidas.

Assim temos esta figura mais detalhada:

Funcionamento detalhado de um Coletor/Spider/Crawler

O escalonamento é um função crítica da coleta. É complicado coletar TODAS as páginas da Web. Por isso são utilizadas técnicas para tentar pegar apenas as "melhores" páginas. Alguns exemplos são:

  • Em Profundidade - Resulta em uma coleta “focada”, pois você caminha por todo um determinado site antes de ir para o próximo. Pode-se limitar o número de níveis.
  • Em Largura com sufixo de URL - Exemplo: *.terra.com.br. Garante cobertura balanceada entre sites. Técnica bastante utilizada.
  • Baseadas em Ranking de URLs - Pode ser baseada em conteúdo, em popularidade (número de acessos) ou em conectividade (número de referências).
  • Baseada em Conectividade - Pode ser de dois tipos:
    • Referências (Backlink count) - Quanto mais links apontando para uma página maior a "importância" dela.
    • Variações recursivas - Links vindos de páginas com maior "importância" tem maior peso. Esta é a técnica usada pelo algoritmo PageRank.

Existem algumas outras dificuldades e observações relativas aos coletores na Web. Como muitos sabem, os robôs das máquinas de busca devem seguir algumas restrições especificadas no arquivo robots.txt e em meta-tags. Além disso, é considerado ético não bombardear o servidor de um site com inúmeras requisições sequenciais.

Existem outros inúmeros detalhes e problemas que precisam ser resolvidos na hora de construir um coletor para uma máquina de busca na Web.

Para quem quiser saber mais:

Web Crawling - Coleta automática na Web - Slides de dois Doutores em Computação professores aqui na UFAM. Altigran Silva (meu orientador :P) e Edleno Moura (meu professor de RI) dois pesquisadores da área. Boa parte deste post foi baseado nestes slides.

Web Crawler
Effective Web Crawling

4 comentários:

Paulo Rodrigo Teixeira disse...

A série está bem legal.

Este de crawlers está bem explicado.

Para ajudar nestes artigos este link seria bem legal:
http://www.portfolio.com/interactive-features/2007/08/google

Felipe Hummel disse...

Obrigado, a idéia é explicar bem bacana mas sem cair muito nos detalhes muito técnicos, senão fica muito chato, hehehe.

Valeu pela indicação do link, vou dar uma olhada!

Abraço

dj gustavo effe disse...

Consegui boa colocação assim.

http://www.djgustavo.net

A F E S T A disse...

é uma boa dica
http://www.afesta.biz