Question

Lorsque vous effectuez une recherche dans Google (je suis presque sûr qu'Altavista a fait la même chose), il est indiqué "Résultats 1-10 sur environ xxxx" ...

Cela m’a toujours étonné ... Qu'est-ce que cela signifie "à propos de"? " Comment peuvent-ils compter approximativement?
Je comprends pourquoi ils ne parviennent pas à obtenir un chiffre précis dans un délai raisonnable, mais comment parviennent-ils même à atteindre ce résultat "approximatif"? un?

Je suis sûr qu'il y a beaucoup de théorie derrière celle-ci qui m'a manqué ...

Était-ce utile?

La solution

Cela ressemble probablement au nombre de lignes estimé utilisé par la plupart des systèmes SQL dans la planification de leurs requêtes; un nombre de lignes dans le tableau (connu exactement depuis la dernière collecte de statistiques, mais généralement pas à jour), multiplié par une sélectivité estimée (généralement basée sur une sorte de modèle de distribution statistique calculé en échantillonnant un petit sous-ensemble de lignes).

Le manuel de PostgreSQL comporte une section sur les les statistiques utilisées par le planificateur c'est assez informatif, du moins si vous suivez les liens vers pg_stats et diverses autres sections. Je suis sûr que cela ne décrit pas vraiment ce que fait Google, mais il montre au moins un modèle dans lequel vous pouvez obtenir les N premières lignes et une estimation du nombre de lignes supplémentaires.

Autres conseils

Pas pertinent pour votre question, mais rappelle une petite blague faite par un de mes amis lors d’une simple recherche d’ego (et ne me dites pas que vous n’avez jamais cherché votre nom dans Google). Il a dit quelque chose comme

"Wow, environ 5 000 résultats en seulement 0,22 seconde! Maintenant, imaginez le nombre de résultats obtenus en une minute, une heure, un jour! "

J'imagine que l'estimation est basée sur des statistiques. Ils ne vont pas compter toutes les correspondances de pages pertinentes, alors ce qu'ils (je voudrais) faire, c'est déterminer approximativement quel pourcentage de pages correspond à la requête, en fonction d'une heuristique, puis l'utiliser comme base pour le décompte. .

Une heuristique pourrait consister à créer un nombre d'échantillons. Prenez un échantillon aléatoire d'environ 1 000 pages pour voir quel pourcentage correspond. Il ne faudrait pas que trop de personnes dans l'échantillon obtiennent une réponse statistiquement significative.

La déduplication est une chose qui n’a pas encore été mentionnée. Certains moteurs de recherche (je ne sais pas exactement comment Google le fait en particulier) utiliseront des méthodes heuristiques pour déterminer si deux URL différentes contiennent un contenu identique (ou extrêmement similaire), et constituent donc des résultats en double.

S'il existe 156 URL uniques, mais que 9 d'entre elles ont été marquées comme des doublons d'autres résultats, il est plus simple de dire "environ 150 résultats". plutôt que quelque chose comme "156 résultats" contenant 147 résultats uniques et 9 doublons ".

Renvoyer un nombre exact de résultats ne vaut pas la surcharge de calculer précisément. Sachant qu'il y a eu 1 004 345 résultats au lieu de "environ 1 000 000", il est plus important, du point de vue de l'expérience de l'utilisateur final, de renvoyer les résultats plus rapidement que le temps supplémentaire nécessaire pour calculer le total.

De Google eux-mêmes: " le calcul du nombre total de résultats de recherche effectuée par Google est une estimation. Nous comprenons qu'un chiffre approximatif est précieux et qu'en fournissant une estimation plutôt qu'un compte exact, nous pouvons obtenir des résultats de recherche de qualité plus rapidement. "

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top