L'anatomie d'un moteur de recherche - ( The Anatomy of a Large-Scale Hypertextual Web Search Engine Sergey Brin and Lawrence Page ) - UNIGE

La page est créée Christine Marchand
 
CONTINUER À LIRE
L'anatomie d'un moteur de
        recherche
 ( The Anatomy of a Large-Scale
 Hypertextual Web Search Engine
 Sergey Brin and Lawrence Page )

    Cours d'algorithmes pour le Web
         Christophe Haenggeli

            7 janvier 2003
Plan de la présentation
Partie A : Préliminaires               Partie C : Google aujourd'hui
   1. Contexte                            1. Matériel et réseau
   2. Les auteurs                         2. Quelques chiffres
Partie B : Présentation de l'article      3. Questions
   1. Introduction
   2. Caractéristiques du système
   3. Composants du système
       3.1 Aperçu de l'architecture
       3.2 Structures de données
       3.3 Crawling
       3.4 Indexation
       3.5 Recherche
   4. Résultats et performances
   5. Conclusions
A 1. Contexte

L'article présente un prototype de moteur de
recherche: celui du fameux Google.
Ecrit en 1998 par S. Brin et L. Page.
Peu de recherches dans ce domaine, à l'
                                      époque.
Première description détaillée et publique d'
                                            un
moteur.
Croissance rapide du Web et manque criant d'
                                           un
outil de recherche efficace.
A 2. Les auteurs
            Sergey Brin: 29 ans, né à Moscou, diplômé
            en mathématiques et informatiques de
             université du Maryland, co-fondateur et
            l'
            président de Google

            Lawrence Page: 30 ans, né au Michigan,
            ingénieur informaticien diplômé de l'
                                                université
            du Michigan, co-fondateur et président de
            Google

Ils se sont rencontrés à l'
                          Université de Stanford et ont collaborés
ensemble au prototype de Google, durant leur doctorat.
B 1. Introduction - Généralités
Pourquoi un nouveau moteur de recherche ?
- Expansion très rapide du Web aussi bien que du nombre
d'utilisateurs => croissance du nb. de requêtes.
- Défauts des annuaires:
      - subjectifs
      - construction et maintenance coûtent cher
      - ne couvrent pas tous les domaines
- Défaut des moteurs (basés sur les « keywords »):
      - trop de résultats et de mauvaise qualité

Pourquoi l'
          appeler Google ?
Prononciation anglaise de «googol» qui signifie 10100
B 1. Introduction – Scalabilité
• 1994 : 110'000 pages indexées et 1500 requêtes/jour.
• 1997 : 100 mios pages indexées et 20 mios requêtes/jour.
• 2000 (prévisions): >1 mia pages indexées et >100 mios
                        requêtes/jour.
   Google devra être scalable pour pouvoir croître avec le web.

Ceci nécessite:
   - technique de «crawling» rapide.
   - utilisation efficace de l'
                              espace de stockage.
   - le système d'   indexation doit traiter efficacement des
centaines de GB.
   - les requêtes doivent être traitées très rapidement.

La difficulté de ces tâches croit en même temps que le Web...
B 1. Introduction – Buts
• Améliorer la qualité des moteurs de recherche.
   - la complétude n'   est pas le seul facteur de qualité
   - les liens significatifs sont noyés parmis les autres
   - les gens regardent que les 10 premiers résultats
   => On a besoin de plus de précision.
          Solution: utiliser l'
                              information hypertextuelle (structure
          et textes des liens).

• Construire une architecture pouvant servir de base à de
  nouvelles recherches.
   - autre moteurs sont fermés (domaine commercial)
   - peu de publications sur les détails techniques
B 2. Caractéristiques – PageRank

Le graphe du Web est une ressource importante, inutilisée par
les moteurs existants !
=> Google utilise cette structure de liens pour calculer un indice
de qualité de chaque page Web.
Le PageRank :
- mesure objective de l'importance d'une page correspondant
        idée subjective que les gens ont de la popularité d'
bien à l'                                                  une
page Web.
- excellent pour donner des priorités aux résultats de recherche
par mots-clés.
- une des caractéristiques les plus importantes de Google (NB: la
technique et le nom de PageRank sont protégés par un brevet: US Patent
6,285,999).
B 2. Caractéristiques – PageRank (2)
Principe de base:
Si une page A fait un lien vers une page B, alors c'
                                                   est que la
page A juge que la page B est suffisamment importante
pour mériter d'
              être proposée aux visiteurs.

Calcul du PR:
  PR(B) = (1-d) + d ( PR(A1)/N(A1) + ... + PR(An)/N(An) )
où:    N(Ai) : nb. Liens sortants de la page Ai
       d : facteur de «découragement» du surfeur aléatoire

• Se calcule en utilisant un algorithme itératif.
• Calcul facile et rapide: le PR de 26 mios de pages se
calcule en quelques heures avec une machine standard.
B 2. Caractéristiques – PageRank (3)

Interprétation de la formule:
• L'augmentation de PR(B) est
d'
 autant plus importante que le
PR(A) est élevé.
• L'augmentation de PR(B) est
d'
 autant plus importante que la page
A a peu de liens sortants.
 => Il vaut mieux avoir un seul
lien entrant, mais de bonne
qualité que beaucoup de liens
entrants insignifiants.               Illustration du calcul simplifié du PR.
B 2. Caractéristiques – Autres

A) Google associe l'
                   ancre (texte du lien) avec la page pointée.
   Avantages:
   • L'ancre fournit souvent une description plus précise de la
     page que la page elle-même.
   • Cela permet d'indexer des pages Web inaccessibles à un
    «crawler» (informations non-textuelles).
   Google utilise cette technique principalement dans le but
   d'
    améliorer la qualité des résultats.

B) Google stocke toutes les pages HTML indexées !
B 3. Composants – Aperçu architecture
Crawler: reçoivent les URL'
                          s du serveur
d'
 URL et téléchargent les pages.
Serveur de stockage: reçoit les pages, les
compresse et les stocke dans le
repository.
Indexeur: lit le repository et parse les
documents, chaque document est
transformé en un ensemble de hits qui
sont stockés dans les barrels.
Il crée aussi le lexique et le fichier des
ancres.
Solveur d' URL: fait la conversion URL
relatives -> URL absolues, génère la BD
de liens utilisée pour calculer les PR.
Chercheur: exécuté par un serveur web,
utilise le lexique, l'
                     index et le PR pour
répondre aux requêtes.
B 3. Composants – Structure de données

Repository: Contient le code HTML de toutes les pages web.
Stocke pour chaque page son docID, sa longueur, son URL et
son contenu HTML. (53.5 GB = 147.8 GB non-compressé)

Lexique: Il contient 14 mios de mots, implémenté en 2 parties:
une liste des mots et une table de hachage de pointeurs vers
l'
 index des documents. (293 MB)

Liste des hits: Liste des occurrences d'  un mot dans un
document. Stocke la position, taille de police et casse du hits (2
octets).
Remarque: Accès disque lents (~10ms) => Google est optimisé
pour éviter autant que possible les accès disque.
B 3. Composants – Structure de données(2)

Forward Index:
- Stocké dans les Forward Barrels.
- Trié selon les docID
Reverse Index:
- Représente toutes les occurences
des mots de tous les documents
- Utilise les même barrels que
Forward Index, mais triés différement
- Trié selon les wordID
- Pointé par le lexique
- Stocké dans les Inverted Barrels
B 3. Composants – Crawling

Le crawler est l' application la plus délicate car elle interagit
avec des centaines de milliers de serveurs web
=> Il doit être très robuste et testé avec attention !

• Google utilise un système distribué comprenant 3 crawlers.
• Chaque crawler gère ~300 connexions simultanément.
• Le système récupère ~600KB de données par seconde (~100
pages web).
• Génère des appels téléphoniques et des mails de
webmaster...
B 3. Composants – Indexing
Parser:
- Doit supporter une énorme quantité d'erreurs potentielles dans les
pages web (robustesse) et doit être rapide.
=> Développer un parser pour le web est une tâche conséquente.
Indexer les documents:
- Après le parsing, chaque document est encodé dans les barrels.
- Ajout du mot dans le lexique (+ calcul du wordID).
- Les occurences de chaque mot sont transformées en listes de hits.
- Ecriture des listes de hits dans les Forward Barrels.
Trier:
Chacun des Forward Barrels est trié pour générer les Inverted Barrel
(l'
  un après l'
            autre).
B 3. Composants – Recherche

But: Fournir des résultats de qualités de manière efficace

La partie intéressante de la recherche est bien sûr le calcul du
rang des documents résultat de la recherche:
• Google conserve beaucoup plus d'informations sur les pages
web que les autres moteurs, notamment dans la liste de hits et
surtout utilise le fameux PageRank.
• Combiner toutes ces infos en une seule valeur est difficile...
• La fonction de ranking a beaucoup de paramètres, choisir la
bonne valeur pour ces paramètres est un art abstrait.
B 4. Résultats

La mesure la plus importante pour un moteur de recherche est
la qualité de ses résultats.

Selon l'expérience (des auteurs), Google produit de meilleurs
résultats que les autres moteurs de recherches commerciaux...

NdT: Comme exemple, ils fournissent le résultat d'une
recherche avec «bill clinton» et expliquent pourquoi il est bon !
B 4. Résultats
- Beaucoup de résultats pointent vers
www.whithouse.gov, c'   est exactement
ce qu' on s'
           attend à voir. Ceci est
l'
 effet du PageRank.
- Pas de résultats concernant un
autre Bill ou un autre Clinton, c'
                                 est dû
à l'
   importance donnée à la proximité
des occurences.

Il est clair qu'
               un vrai test de qualité
devrait être une étude complète de
différents cas d'utilisation.

NdT: Par manque de place pour une
étude détaillées, les auteurs invitent
le lecteur à essayer Google lui-même
!
B 4. Performances
Stockage: Google nécessite ~110GB pour stocker ses données.
Système:
  - le crawling: il faut ~ 9 jours pour télécharger les 26 mios de
   pages.
   - l'
      indexation : se fait simultanément au crawling et dure le
   même temps.
   - le tri: se fait en parallèle avec 4 noeuds et dure 24 h.
Recherche:
- Optimiser la rapidité des recherches n'est pas un but majeur de ce
travail...
- La version actuelle répond à la plupart des requêtes en 1 à 10
secondes (sans optimisations).
- L'
   intention est d'
                  optimiser Google pour qu'  il soit capable de répondre
à des centaines de requêtes par seconde.
B 4. Conclusions

Le but principal qui était de fournir des résultats de haute
qualité en utilisant différentes techniques (PR, texte des ancres,
informations de proximité) semble avoir été atteint.

Cependant, il reste une grande quantité de points à améliorer
ou à ajouter pour le rendre efficace, complet et facilement
extensible.
C 1. Matériel et réseau

Google utilise plus de 10'
                         000 serveurs. Ce sont de simples PC
à base de processeurs Intel tournant sous RedHat Linux.

Ces serveurs sont répartis dans 7 centres de données
différents.

L'index, qui représente maintenant plusieurs tera octets (1012)
de données, est découpé en morceaux et réparti sur des
clusters de 40 noeuds.

L'index est mis à jour environ une fois par mois, il faut environ
4 jours pour que les centres recoivent le nouvel index.
C 2. Quelques chiffres

Google a une part de marché de 50 % des recherches
effectuées sur le web.

Google indexe plus de 3 mias de documents.

Google traite environ 150 mios de requêtes par jour, soit
1700/sec.

La société Google emploie plus de 200 employés dans le
monde.
C 3. Questions

Deux questions en guise de conclusion:

• La qualité de Google est avérée et son succès
populaire est total, mais jusqu'
                               à quand ?
• Ecrasera-t-il toutes concurrences ou se fera-t-il
doubler ?
Vous pouvez aussi lire