Motori di Ricerca presente e futuro prossimo Cosa è un motore di ricerca ? Paolo Ferragina, Università di Pisa Un lavoro storico: Brin & Page Paolo Ferragina, Università di Pisa [1998] Motore di Ricerca: struttura ? Archivio Pagine Crawler Query Analizzatore pagine Indicizzatore Risolutore Controllo Testo Utilità Struttura Paolo Ferragina, Università di Pisa Analizzatore Rilevanza Il Web “Surface Web”: 25 ÷ 75 Terabytes (1Tb = 1000 Gb) 6 miliardi di pagine (cambiano circa 10 milioni al giorno) Pagina in media 5 ÷ 40Kb, #links ~ 10 Circa il 23% delle pagine è duplicato “Hidden Web”: circa 500 volte più grande Siti intranet, database, pagine dinamiche,… Circa 4,200 Tb di dati testuali interessanti Paolo Ferragina, Università di Pisa Una immagine pittorica del Web Paolo Ferragina, Università di Pisa Alcuni dati Paolo Ferragina, Università di Pisa Velocità di cambiamento [snapshot settimanale nel 2004: 154 web sites, 35 mil pg, 65Gb] Normalizzata rispetto prima settimana Paolo Ferragina, Università di Pisa Motori di Ricerca presente e futuro prossimo Cosa è un crawler ? Paolo Ferragina, Università di Pisa Fase di Crawling Numerosi problemi di progettazione: Copertura: Quali pagine occorre visitare ? Aggiornamento: Quanto spesso occorre visitarle ? Invadenza: Come minimizzare il carico dei siti visitati ? Efficienza: Come parallelizzare il processo di “crawling” ? Scalabilità: Come gestire il “flusso” di pagine ? Paolo Ferragina, Università di Pisa “Ciclo di vita” di un Crawler Link Extractor Downloader while(<ci sono pagine da esaminare nel repository>){ <prendi una pagina p> <estrai i link contenuti in essa> <inserisci i link estratti in una coda, ciascuno con una priorità dipendente dalla politica scelta> <marca p come pagina da cui abbiamo estratto i link> } while(<ci sono link assegnati dal Manager>){ <estrai i link> <scarica le pagine pi dalla rete> <invia le pi al page repository> } Crawler Manager <estrai un gruppo di link dalla coda in ordine di priorità> while(<ci sono link nel gruppo>){ foreach link u { if ( (u “pagine già viste” ) || ( u “pagine già viste” && <sul Web server la pagina è più recente> ) && ( <u è un link accettato dal robot.txt del sito>) ) { <risolvi u rispetto al DNS> <invia u alla coda dei downloaders> } } Paolo Ferragina, Università di Pisa Politica di selezione delle pagine Data una pagina P, definire quanto sia “buona”. Esistono molte metriche: Guidate dal topic coperto dal motore Guidate dalla popolarità BFS, DFS, Random Strategie combinate 4 1 3 2 BFS Paolo Ferragina, Università di Pisa 7 7 6 5 1 5 2 DFS 6 4 3 Raggiungimento di pagine interessanti Paolo Ferragina, Università di Pisa Alcuni risultati Paolo Ferragina, Università di Pisa Focused Crawling Si scelgono selettivamente le pagine sulle quali continuare la visita, in accordo a un insieme di topic rilevanti definiti apriori. I topic sono specificati mediante documenti campione I topic sono specificati mediante indirizzi Risparmio di risorse di rete e di hardware. Esempi di crawler open-source Nutch, also used by Yahoo Hentrix, used by Archive.org Paolo Ferragina, Università di Pisa