The Anatomy of a Large-scale Hypertextual web search...
Transcript of The Anatomy of a Large-scale Hypertextual web search...
![Page 1: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/1.jpg)
The Anatomy of a Large-scale The Anatomy of a Large-scale Hypertextual web search engineHypertextual web search engine
Sergey Brin & Lawrence PageSergey Brin & Lawrence Page
Exposé de Moteur de rechercheExposé de Moteur de rechercheDEA IFA 2004-2005DEA IFA 2004-2005
Leborgne FabienLeborgne Fabien
![Page 2: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/2.jpg)
PlanPlan
■ Introduction.Introduction.■ Caractéristiques.Caractéristiques.■ Architecture.Architecture.■ Composants.Composants.■ Conclusion.Conclusion.
![Page 3: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/3.jpg)
ContexteContexte
■ L'article:L'article:– Daté de 1998.Daté de 1998.– Signé par Serge Brin & Lawrence Page.Signé par Serge Brin & Lawrence Page.
■ Peu de recherche dans ce domaine.Peu de recherche dans ce domaine.■ Première description détaillé d'un moteur.Première description détaillé d'un moteur.■ Yahoo, altavista,... manque évident.Yahoo, altavista,... manque évident.
![Page 4: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/4.jpg)
Pourquoi Google?Pourquoi Google?
■ Expansion rapide ( pages &utilisateurs)Expansion rapide ( pages &utilisateurs)– =>croissance du nbr de requêtes=>croissance du nbr de requêtes– =>difficulté pour trouver ce que l'on cherche=>difficulté pour trouver ce que l'on cherche
■ Recherche avec arborescence:Recherche avec arborescence:– Critères subjectifs.Critères subjectifs.– Coûte cher (construction & maintenance).Coûte cher (construction & maintenance).– Impossible de couvrir tous les sujets.Impossible de couvrir tous les sujets.
■ Recherche avec Moteur de Recherche:Recherche avec Moteur de Recherche:– Trop de résultats non voulus.Trop de résultats non voulus.– Annonceurs (tromperie volontaire)Annonceurs (tromperie volontaire)
■ Google = « googol » = 10^100Google = « googol » = 10^100
![Page 5: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/5.jpg)
Passage à l'échellePassage à l'échelle
■ Augmentation du nombre de pagesAugmentation du nombre de pages■ 1994 -> 110,000 pages1994 -> 110,000 pages■ 1997 -> 2,000,000 à 100,000,000 docs1997 -> 2,000,000 à 100,000,000 docs■ prévision 2000 -> x,000,000,000 de docs.prévision 2000 -> x,000,000,000 de docs.
■ Augmentation du nombre de requêtesAugmentation du nombre de requêtes■ 1994 ->WWW Worm 1500 par jour1994 ->WWW Worm 1500 par jour■ 1997 -> altavista 20 millions par jour1997 -> altavista 20 millions par jour
■ Google devra supporter cette croissance.Google devra supporter cette croissance.– EfficacitéEfficacité– RapiditéRapidité
![Page 6: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/6.jpg)
Comment passer à l'échelleComment passer à l'échelle
■ Efficacité:Efficacité:– Technique d'exploration (crawl) rapide.Technique d'exploration (crawl) rapide.– Utilisation efficace de l'espace de stockage.Utilisation efficace de l'espace de stockage.– Indexation rapide.Indexation rapide.– Réponse rapide aux requêtes.Réponse rapide aux requêtes.
![Page 7: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/7.jpg)
Qualité des résultatsQualité des résultats
■ Précision de la recherche.Précision de la recherche.– PageRank.PageRank.– Utilisation des Ancres.Utilisation des Ancres.– Proximité des termes.Proximité des termes.– Détails de présentation (taille & style de police)Détails de présentation (taille & style de police)
![Page 8: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/8.jpg)
PageRank (1/2)PageRank (1/2)
■ Méthode de calcul de l'intérêt d'une pageMéthode de calcul de l'intérêt d'une page– intérêt subjectif calculé à partir de critères objectifs.intérêt subjectif calculé à partir de critères objectifs.
■ La grande innovation de google.La grande innovation de google.■ Utilise l'arborescence des pages.Utilise l'arborescence des pages.■ Classement des pages pertinent.Classement des pages pertinent.
![Page 9: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/9.jpg)
PageRank (2/2)PageRank (2/2)
■ Principe de base:Principe de base:– Formule:Formule:
■ PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))
– L'importance d'une page est déterminé par L'importance d'une page est déterminé par l'importance des pages qui pointe vers elle.l'importance des pages qui pointe vers elle.
■ Algo itératif.Algo itératif.
![Page 10: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/10.jpg)
Les ancresLes ancres
■ Principe:Principe:– Association du texte du lien avec la page Association du texte du lien avec la page
pointé.pointé.■ Avantages:Avantages:– Description préciseDescription précise– Pages non-crawlable (image, archive, ...)Pages non-crawlable (image, archive, ...)
![Page 11: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/11.jpg)
ArchitectureArchitecture
■ Serveur d'url.Serveur d'url.■ Explorateur (crawler).Explorateur (crawler).■ Serveur de stockage.Serveur de stockage.■ Indexeur.Indexeur.■ Solveur d'url.Solveur d'url.■ chercheur(searcher).chercheur(searcher).■ Pagerank.Pagerank.■ Repository.Repository.■ Lexique.Lexique.■ AncreAncre■ lexiquelexique
![Page 12: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/12.jpg)
Composants (1/4)Composants (1/4)
■ Serveur d'urls:Serveur d'urls:– Transmission des listes d'urls aux Transmission des listes d'urls aux
crawlercrawler
■ Explorateur(crawler):Explorateur(crawler):– Exploration des pages.Exploration des pages.– Envoi des pages au serveur de Envoi des pages au serveur de
stockage.stockage.■ +sieurs distribués+sieurs distribués
■ Serveur de stockage:Serveur de stockage:– Compression des pages Compression des pages – Sauvegarde dans le repositorySauvegarde dans le repository– Nouvelle page associée à un docID.Nouvelle page associée à un docID.
![Page 13: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/13.jpg)
Composants (2/4)Composants (2/4)
■ Indexeur:Indexeur:– Lecture dans la repository.Lecture dans la repository.– Décompression des documents.Décompression des documents.– Parsing des pages.Parsing des pages.– Conversion des pages en « hit Conversion des pages en « hit
list » (liste d'occurences).list » (liste d'occurences).– Distribution des « hits » dans les Distribution des « hits » dans les
« barrels » de façon partiellement « barrels » de façon partiellement triée.triée.
– Parsing des url et envoie des Parsing des url et envoie des informations dans les ancres.informations dans les ancres.
– Création du lexique.Création du lexique.
![Page 14: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/14.jpg)
Composants(3/4)Composants(3/4)
■ Solveur d'url:Solveur d'url:– Lecture des ancres.Lecture des ancres.– Conversion Conversion
url relative -> url absolueurl relative -> url absolue– Génère la BD de liens utilisé Génère la BD de liens utilisé
pour le PageRank.pour le PageRank.
■ Chercheur:Chercheur:– Exécuté par un serveur web.Exécuté par un serveur web.– Utilise:Utilise:
■ LexiqueLexique■ IndexIndex■ PageRankPageRank
![Page 15: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/15.jpg)
Composant (4/4)Composant (4/4)
■ Trieur:Trieur:– Création de l'index inverseCréation de l'index inverse
■ Triage par wordIDTriage par wordID– Duplication de la mémoire. (cf. indexation)Duplication de la mémoire. (cf. indexation)
![Page 16: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/16.jpg)
Structure de données (1/4)Structure de données (1/4)
■ Repository:Repository:– Contient les pages HTMLContient les pages HTML– Utilise ZlibUtilise Zlib
■ RapideRapide■ Ratio 3 to 1 (bzip = 4 to 1)Ratio 3 to 1 (bzip = 4 to 1)
– Entrée préfixé par DocID , length, URLEntrée préfixé par DocID , length, URL
![Page 17: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/17.jpg)
Structure de données (2/4)Structure de données (2/4)
■ Lexique:Lexique:– 14 millions de mots.14 millions de mots.– Liste de mot + table de hachage de pointeur.Liste de mot + table de hachage de pointeur.– Stockage en mémoire vive (~256MB).Stockage en mémoire vive (~256MB).
![Page 18: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/18.jpg)
Structure de données(3/4)Structure de données(3/4)
■ Hit listsHit lists– Informations:Informations:
■ PositionPosition■ Taille policeTaille police■ CapitalisationCapitalisation
– Dans les barrels, sur 2 octets.Dans les barrels, sur 2 octets.– Type:Type:
■ Plain -> textePlain -> texte■ Fancy ->url, titre, texte ancre, meta-tagFancy ->url, titre, texte ancre, meta-tag
– Ancre -> url (avec docID)Ancre -> url (avec docID)
![Page 19: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/19.jpg)
Structure de données(4/4)Structure de données(4/4)
■ Forward Index:Forward Index:– Pour chaque documentPour chaque document
■ Ensemble des wordid et Ensemble des wordid et de leurs hits.de leurs hits.
– Trié par docidTrié par docid
■ Reverse index:Reverse index:– Trié par wordidTrié par wordid
![Page 20: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/20.jpg)
Challenge (crawling)Challenge (crawling)
■ Interagit avec des centaine de serveurs.Interagit avec des centaine de serveurs.– Robuste!Robuste!
■ Le crawler de Google:Le crawler de Google:– Système distribué avec 3 crawlersSystème distribué avec 3 crawlers– ~300 connexions simultanées.~300 connexions simultanées.– ~600KB /sec~600KB /sec– Appels téléphonique & mailAppels téléphonique & mail
![Page 21: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/21.jpg)
Challenge (indexing)Challenge (indexing)
■ Parser.Parser.– Support des erreurs dans les pages.Support des erreurs dans les pages.– RapideRapide
■ Indexer les documents.Indexer les documents.– Rapidité.Rapidité.– Structures compactes.Structures compactes.– Ajout de mots.Ajout de mots.
■ Trier.Trier.– Génération de l'index inverse.Génération de l'index inverse.
![Page 22: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/22.jpg)
RésultatsRésultats
■ PageRank:PageRank:– Site officiel « .gov »Site officiel « .gov »
■ Proximité des termesProximité des termes– Pas d'autre billPas d'autre bill
■ Subjectivité du résultatSubjectivité du résultat
![Page 23: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/23.jpg)
PerformancePerformance
■ Espace.Espace.– Nécessite ~100GBNécessite ~100GB
■ Rapidité.Rapidité.– Réponse entre 1 et 10 secondes:Réponse entre 1 et 10 secondes:
■ Sans optimisation (cache, algorithme)Sans optimisation (cache, algorithme)
■ Le buts n'était pas d'améliorer la rapidité mais la Le buts n'était pas d'améliorer la rapidité mais la qualité des résultats.qualité des résultats.
![Page 24: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/24.jpg)
ConclusionConclusion
■ GoogleGoogle– Passage à l'échelle.Passage à l'échelle.
■ Difficile avec l'évolution du web.Difficile avec l'évolution du web.
– Qualité de la recherche.Qualité de la recherche.■ PageRank, texte des ancres, proximité des PageRank, texte des ancres, proximité des
termes...termes...
– Rapide et efficace.Rapide et efficace.
![Page 25: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/25.jpg)
Amélioration possibleAmélioration possible
■ Mise en cache des réponses des requêtes.Mise en cache des réponses des requêtes.■ Meilleur allocation du disqueMeilleur allocation du disque■ Meilleurs algorithmes.Meilleurs algorithmes.■ Machine dédiée.Machine dédiée.■ ......■ Ajout d'opérateurAjout d'opérateur (AND, OR, Négation, restriction (AND, OR, Négation, restriction
de la recherche, ...)de la recherche, ...)
■ ......
![Page 26: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/26.jpg)
Google aujourd'huiGoogle aujourd'hui
![Page 27: The Anatomy of a Large-scale Hypertextual web search enginedr/COURS/RI2005/google/Moteur_recherche.pdf · Google = « googol » = 10^100. Passage à l'échelle Augmentation du nombre](https://reader033.fdocument.pub/reader033/viewer/2022051805/5ffa007e8e995b080b0e083b/html5/thumbnails/27.jpg)
BibliographieBibliographie
■ Sergey Brin, Lawrence Page. Sergey Brin, Lawrence Page. The Anatomy of a Large-The Anatomy of a Large-scale Hypertextual web search engine. scale Hypertextual web search engine. Mars 1998.Mars 1998.
■ Ian Rogers.Ian Rogers. The Google Pagerank Algorithm. The Google Pagerank Algorithm.■ Heting Chu, Marilyn Rosenthal. Heting Chu, Marilyn Rosenthal. Search Engines for the Search Engines for the
World Wide Web: A Comparative Study and Evaluation World Wide Web: A Comparative Study and Evaluation Methodology. Methodology. Octobre 1996.Octobre 1996.