Os motores de busca Inexact Counting (cerca resultados xxx)
-
02-07-2019 - |
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 ...
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.