Muitos amigos meus, leigos em ciência da computação, me pediram uma explicação sucinta e sem jargões de como o Google funciona. Qual a receita mágica que determina as páginas que o Google deve responder quando você faz a sua busca? Em primeiro lugar, vale esclarecer que o Google não é dono de nenhum grande mistério tecnológico. Mas, certamente, desenvolveram uma tecnologia interessante, e que vamos entender um pouco melhor a seguir.
O Google é basicamente um banco de dados inteligente. Se você já usou o fichário da biblioteca do seu colégio, então sabe já como um banco de dados funciona. Os dados são agrupados em tabelas (as gavetas do fichário), e ordenados de acordo com palavras-chave, como autor ou título. A vantagem do banco de dados sobre o fichário é que o ordenamento pode ser por um número imensamente maior de características. Já imaginou se sua biblioteca tivesse que ter trinta tipos de fichários, um para ordernar por autor, outra por título de livros, outra por ano de publicação, outra por editora, e assim por diante.
Pois bem, o que o Google faz é acumular cada página da Web num banco de dados. O endereço da página, o nome, e as palavras mais frequentes e suas respectivas frequências são todas incluídas na ficha daquela página (cada página é como um livro a ser catalogado). O mais importante, todas as outras páginas para as quais a página linca também são guardadas. Quando você digita a sua busca na caixinha do Google, o software traz todas as fichas cujo conteúdo casam com sua busca.
Para fazer isto de forma eficiente, um dicionário global é criado (o famoso dicionário reverso ou índice reverso), onde cada palavra que existe na Web aparece uma vez. E na ficha de cada palavra são colocados códigos que se relacionam com as páginas que contém aquela palavra. Uma maneira de entender isso é que cada palavra tem uma lista com os endereços das páginas que a contêm. Quando você digita uma palavra e clica em buscar, tudo que precisa ser feito é imprimir na tela as listas de endereços de todas as palavras que você pediu.
Mas então onde está o segredo do Google? Até aí não há nada demais. Na verdade o que foi citado já é feito há anos por bancos de dados não estruturados. O segredo do Google, e na verdade de qualquer buscador, está em duas coisas: como ele faz para encontrar todas páginas da Grande Rede e como ele decide a ordem em que vai listar os resultados. Os nomes técnicos para estas duas atividades são crawling e scoring. Um bom buscador é bastante abrangente, e ao mesmo tempo lista as respostas na ordem que o maior número de pessoas espera. E responde à busca rápido.
Por exemplo, se você procurar por "Ronaldo" no Google Brasil, você espera que os primeiros linques que apareçam sejam sobre o Ronaldinho Gaúcho ou sobre Ronaldo Fenômeno. Não que a primeira página seja a de Ronaldo, seu vizinho, e a resposta de posição 1,233,233 seja a primeira com Ronaldo, o jogador de futebol. Ao mesmo tempo, se você coloca "World Champion 2002", quer que algo relacionado ao assunto apareça e provavelmente ficará decepcionado se não aparecer. E além disso tudo, sua paciência não aguenta esperar duas horas para uma busca ser respondida.
Todo buscador, do Google ao MSN Search, passando pelo Yahoo, pelo Ask Jeeves e até o Cadê, procura atender a esses três requisitos. Mas como falei do Google, vamos entender melhor como ele funciona. O crawling do Google, assim como o da maioria dos buscadores é feito através de programas de computador que vão seguindo todos os linques de uma página, e acumulando as informações das páginas visitadas, a partir de uma página inicial. Uma boa página inicial é a de um índice como o Yahoo (www.yahoo.com) . A coisa toda é feita de forma organizada, de maneira que ao final do processo, um componente desconectado da Web inteira foi explorada. Outra página inicial deve ser fornecida para explorar outros componentes desconectados. Por exemplo, é pouco usual um índice em inglês levar a descobrir páginas em alfabetos não ocidentais. Portanto o crawler, programa que faz o engatinhamento, tem que ser reinciado com uma página em japônes.
Para cada página visitada, o Google cria uma ficha de biblioteca. As palavras da página que estão no dicionário global tem suas frequências contadas, o endereço da página é anotado na ficha, e o endereço de todas as páginas para as quais a página linca são anotados. Finalmente, o próprio dicionário global é emendado caso alguma palavra nova seja encontrada.
Ao fim do processo de crawling - que há uns dez anos atrás demorava cerca de uma semana para visitar a Web inteira, e hoje demora bem mais que um mês - o Google tem um gigantesco banco de dados com informações concisas da página. Uma enxugada no dicionário global é feita, para remover palavras frequentes demais, como por exemplo preposições, e para remover palavras infreqüentes demais, como um erro de tipografia exdrúxulo. Por isso, se seu nome for muito incomum (muito mesmo), você não será indexado pelo Google. Se seu nome for muito incomum, mas você cometer um ato que te põe nas capas de vários jornais, a frequência do seu nome aumenta, e o Google vai te indexar.
O próximo passo é então como o scoring do Google é feito. Uma maneira natural de ordenar as páginas, quando uma busca é feita, é simplesmente pela frequência com que a palavra buscada aparece na página. Por exemplo, se você busca por "mágica", uma página que contenha a palavra mil vezes, é provavelmente mais importante do que uma que contem a palavra somente dez vezes. Infelizmente, um esquema simplista como este pode ser facilmente burlado, com indivíduos criando páginas que tenham milhões de vezes a palavra "mágica", mesmo sem ser relacionado ao assunto ou para vender um livro específico de mágica.
Cada buscador tem então a sua receita mágica para contrabalançar este tipo de problema. O Google usa uma idéia de pontos por autoridade (relevance scoring). Talvez tenha sido a grande sacada da dupla Brin & Page ao projetar seu buscador. A pontuação do Google soma aos pontos tradicionais (como frequência da palavra, importância da palavra num contexto dado por alguma fórmula simples pré-programada, etc.), uma pontuação dada por reputação.
Como medir reputação? A idéia é simples: se páginas com muita reputação apontam para você, então você tem muita reputação. É uma propriedade hereditária. Matematicamente isto é feito usando teoria dos grafos, a mesma que você usa para colorir mapas-múndi com o mínimo de cores possíveis. Mas como medir a reputação de uma página na Web, se você não sabe a reputação de ninguém a priori?
Um jeito simples, solução de engenheiro, é montar um usuário aleatório (um random browser ou monkey browser). A maneira como este usuário funciona é a seguinte: ele começa de uma página inicial e escolhe aleatoriamente um linque a ser clicado. Ele segue para a página clicada e repete o processo. O processo é feito indefinidamente. Após muito longo tempo (provavelmente após centenas de bilhões de cliques) você pode calcular a reputação de cada página com uma fórmula simples: conte o número de vezes que a página foi visitada pelo monkey browser. Para normalizar a pontuação, o melhor é calcular a fração do total de páginas visitadas que cada página aparece. Só para deixar a coisa mais simples, suponha que a Web tem só 3 páginas, A, B e C. Suponha que o monkey browser viajou por cem páginas usando o método aleatório e visitou A trinta vezes. Então a reputação de A é simplesmente 30/100 (ou seja, 0.3 de 1.0).
Uma interpretação bacana do seu score de relevância normalizado desta forma é que ele é simplesmente a chance de um monkey browser ir parar na sua página. Se a probabilidade é alta, então sua página é importante. Tudo isto já era conhecido em teoria dos grafos, e o que os dois jovens de Stanford fizeram com a ajuda de seus professores foi incorporar isto a busca na Web.
Para concluir, um último detalhe: se o Google realmente precisasse lançar macacos aleatórios para calcular a pontuação, provavelmente iriam levar anos para se concluir o cálculo, afinal precisariam fazer bilhões de visitas para se ter um número confiável (a Web tem bilhões de páginas). Felizmente, existe uma maneira eficiente de calcular estas probabilidades sem fazer visita alguma. Você só precisa saber a estrutura de linques do conjunto de páginas (que página liga com quem). O algoritmo é bastante antigo, tem mais de 100 anos. E uma das suas aplicações anteriores foi resolver problemas como calcular as frequências de vibração na corda do seu violão ou a chance de se ganhar em pôquer.
O que destacou o Google das outras máquinas de busca existentes foi a idéia de fazer um crawling mais completo que todo mundo, numa época em que ninguém se dispunha a fazer isso, e a receita da reputação entrando como parte da pontuação da página. Portanto agora você já sabe os principais segredos do Google, e pode seguir para descobrir truques para aparecer no topo da lista.
Adorei seu texto, me lembrei de uma tarde inteira que você pacientemente passou me explicando como a Google funciona. Não é porque é meu irmão não, mas o texto está uma maravilha!!! Saudades, Beijos, Lakshmi