Pergunta

Quando você pesquisa no Google (tenho quase certeza que Altavista fez a mesma coisa) diz "Resultados 1-10 de aproximadamente xxxx" ...

Isso sempre me surpreendeu ... O que significa "cerca"?
Como eles podem contar aproximadamente?
Eu entendo por que eles não podem chegar a um número preciso em um tempo razoável, mas como eles mesmo chegar este "aproximada"?

Eu tenho certeza que há um monte de teoria por trás disso que eu perdi ...

Foi útil?

Solução

O mais provável é semelhante ao tipo de contagens de linha estimada usada pela maioria dos sistemas SQL em seu planejamento de consulta; um número de linhas na tabela (conhecido exatamente como das últimas estatísticas de tempo foram coletados, mas geralmente não up-to-date), multiplicado por uma seletividade estimada (geralmente baseado em um tipo de modelo de distribuição estatística calculada por amostragem algum pequeno subconjunto de linhas).

O manual do PostgreSQL tem uma seção sobre estatísticas utilizadas pelo planejador que é bastante informativo, pelo menos se você seguir os links para pg_stats e várias outras seções. Tenho certeza de que realmente não descrevem o que o Google faz, mas pelo menos mostra um modelo onde você poderá obter as primeiras N linhas e uma estimativa de quantos mais poderia haver.

Outras dicas

Não é relevante para a sua pergunta, mas lembra de uma brincadeira de um amigo meu fez ao fazer um ego-busca simples (e não me diga que você nunca Googled seu nome). Ele disse algo como

"Uau, cerca de 5.000 resultados em apenas 0,22 segundos! Agora, imagine quantos resultados este é em um minuto, uma hora, um dia!"

Eu imagino que a estimativa é baseada em estatísticas. Eles não vão contar todas as partidas de páginas relevantes, de modo que eles (eu) fazer é trabalhar para fora mais ou menos o percentual de páginas iria coincidir com a consulta, com base em alguma heurística, e depois usar isso como base para a contagem .

Uma heurística poderia ser a de fazer uma contagem de amostra - ter uma amostra aleatória de 1000 ou para que as páginas e ver o percentual combinado. Não levaria muitos na amostra para obter uma resposta statisically significativa.

Uma coisa que não foi mencionado ainda é desduplicação. Alguns motores de busca (não tenho certeza exatamente como Google, em particular, fá-lo) irá usar heurísticas para tentar decidir se duas URLs diferentes contêm o mesmo (ou muito semelhante) de conteúdo, e são resultados assim duplicados.

Se houver 156 URLs únicas, mas 9 dos que foram marcados como duplicatas de outros resultados, é simples dizer "cerca de 150 resultados" em vez de algo como "156 resultados que contém 147 resultados únicos e 9 duplicatas".

Voltando um número exato de resultados não vale a sobrecarga com precisão calcular. Uma vez que não é muito de um valor adicional de saber que havia 1,004,345 resultados em vez de 'cerca de 1.000.000', é mais importante do ponto de vista final experiência do usuário para retornar os resultados mais rapidamente, em vez do tempo adicional para calcular o total.

De Google si: "cálculo do número total de resultados de pesquisa do Google é um estimar. Entendemos que um valor aproximado é valioso, e fornecendo uma estimativa em vez de uma conta exata, podemos retornar resultados de pesquisa de qualidade mais rápido ".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top