Antes de mais nada, um disclaimer: As informações postadas por aqui são provenientes da minha experiência pessoal com a área e de algumas pesquisas sobre o tema, portanto não garanto que sejam 100% corretas e/ou precisas. Caso você encontre algum erro ou algo do tipo, me avise nos comentários.
Não é novidade pra ninguém que existe mais informação disponível na Internet do que qualquer pessoa pode imaginar, e que é possível encontrar literalmente qualquer coisa que se queira. Devido a este fato, nos dias de hoje os serviços de busca ocupam um lugar central na experiência do usuário da grande rede, sendo integrados aos navegadores e passando a fazer bem mais do que apenas buscar informações textuais – há busca de imagens, localidades, vídeos e o que mais se puder extrair algum tipo de dado.
Apesar do uso da tecnologia ser recente, a tecnologia em si não é – remonta aos idos do século e do (pasmem) milênio passado, lá pelos idos de 1975, quando teria sido publicado por um cidadão chamado Gerard Salton um artigo entitulado “A Vector Space Model for Information Retrieval”, que lançou as fundações para a Recuperação de Informação. No entanto, apesar de existirem diversas citações a este artigo, não há evidência que tenha sido de fato publicado e sim que tenha sido uma fusão entre dois artigos publicados por Salton neste mesmo ano e que falavam sobre o tema. Se você quiser saber mais detalhes sobre esta história, basta dar uma lida neste documento aqui.
Imprecisões históricas a parte, este artigo seminal demonstrava um modelo matemático chamado modelo espaço vetorial, ou simplesmente modelo vetorial. Este modelo representa documentos (conteúdo textual como por exemplo artigos de jornal, páginas Web, artigos científicos, etc) como vetores em um espaço n-dimensional, onde n representa a quantidade de palavras únicas (termos) que ocorrem no interior de todos os documentos, e o problema da busca torna-se então “apenas” achar os vetores mais próximos ao vetor correspondente a consulta submetida. Simples, não?
Dito assim, parece tudo muito complicado, portanto vamos a um exemplo gráfico:

Exemplo de espaço vetorial
Neste exemplo há apenas dois termos pa e pb, resultando em duas dimensões no espaço, e um documento, dj, onde cada termo aparece duas vezes. O vetor q representa uma consulta, que possui uma ocorrência da palavra pb e duas ocorrências de pa. Pode-se notar que há um ângulo θ entre estes vetores, que pode ser utilizado para indicar a distância entre eles. O que é utilizado, no entanto, é o cosseno deste ângulo, pois a medida que o ângulo tende a diminuir o cosseno tende a aumentar, servindo como uma medida prática de proximidade. Desta forma, quanto maior o cosseno, maior é a similaridade entre o documento e a consulta. No final das contas, basta ordenar os documentos por similaridade e voilà, uma consulta acabou de ser processada.
Uma coisa interessante nisso tudo é a noção de similaridade. Uma consulta recupera não só os documentos que contém os termos pesquisados mas também atribui a cada documento um valor que indica o quão similar ele é a consulta realizada, indo um pouco além de apenas fazer uma busca textual como qualquer SGBD faria. Há uma boa dose de matemática por trás disso tudo, pescando coisas da Álgebra Linear e da Teoria da Informação, mas isso é assunto pra um próximo post. Essa idéia de similaridade textual demonstrada aqui ainda é (imagino eu) utilizada em larga escala pelas máquinas de busca existentes nos dias atuais, juntamente com uma série de outros dados obtidos dos documentos para que no final tudo seja combinado em uma fórmula para enfim ordenar tudo para mostrar na tela do navegador. Só que isso também é assunto pra próximo(s) post(s).
Por enquanto é isso.