The Anatomy of a Large-scale Hypertextual web search...

27
The Anatomy of a Large-scale The Anatomy of a Large-scale Hypertextual web search engine Hypertextual web search engine Sergey Brin & Lawrence Page Sergey Brin & Lawrence Page Exposé de Moteur de recherche Exposé de Moteur de recherche DEA IFA 2004-2005 DEA IFA 2004-2005 Leborgne Fabien Leborgne Fabien

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.