[Sebastian Thrun] Qual è la tua opinione su come si realizza un motore di ricerca, tu ne hai già realizzato uno, vero ? [Sergey Brin, Co-fondatore di Google] Si. Io credo che la cosa più importante, se stai pensando di realizzare un motore di ricerca, è avere una buona base di informazioni da cui partire. Nel nostro caso abbiamo usato il world wide web, che al momento era certamente più piccolo di quanto lo sia oggi. Era una cosa nuova e molto stimolante, con molte parti ancora inesplorate. [David Evans] L'obiettivo delle prime tre unità del corso è di costruire la base di informazioni In particolare, vogliamo costruire una base di informazioni per il nostro motore di ricerca analizzando il web, che è esattamente quello che fa un web crawler. Un web crawler è un programma che colleziona i contenuti estratti dal web. Prova a pensare ad una pagina web nel tuo browser, sarà una pagina tipo questa. Usiamo il sito web di Udacity come esempio di pagina web. E' una pagina piena di contenuti, con molte immagini e del testo. Tutto questo appare nel tuo browser quando richiedi di visualizzare la pagina. La cosa importante di una pagina sono i collegamenti ipertestuali. Un collegamento ipertestuale è qualcosa che ci indirizza verso un'altra pagina. Abbiamo, quindi, un collegamento alle domande più frequenti, un collegamento alla pagina di CS 101, più altri collegamenti verso altre pagine web. Un collegamento può comparire, nel browser, come testo sottolineato ma potrebbe anche comparire in altri modi, dipende dalle impostazioni del tuo browser. Ma la cosa importante che un collegamento permette di fare è di puntare verso altre pagine web che, a loro volta, possono contenere altri collegamenti e quindi abbiamo un altro collegamento verso questa pagina Potrebbe essere il mio nome che ci indirizza alla mia home page, Tutte le pagine che noi riusciamo a trovare con il nostro web crawler sono ottenute seguendo i collegamenti così non sarà necessario esplorare ogni pagina sul web. Se si inizia da una buona pagina di partenza troveremo molte pagine. Ciò che un web crawler dovrà fare è partire da una pagina, recuperare tutti i collegamenti all'interno di questa pagina, seguire i collegamenti per trovare altre pagine e, su queste altre pagine, seguire i collegamenti presenti su queste pagine per trovare ancora altre pagine, ci saranno molti altri collegamenti su queste pagine. Ed infine, avremo una collezione di molte pagine presenti nel web. Questo è quello che dovremmo fare per realizzare un web crawler. In qualche modo noi dovremmo iniziare da una pagina di partenza, estrarre i collegamenti dalla pagina, seguire tutti i collegamenti individuati verso altre pagine, collezionare i collegamenti di queste nuove pagine, seguirli e collezionare tutti i collegamenti di tutte le pagine esplorate. Sembra che ci sia molto da fare. Non faremo tutta la procedura nella prima unità, ma ciò su cui ci concentreremo nella prima unità sarà l'estrazione di un collegamento Quindi, iniziamo con del testo che ha un collegamento al suo interno specificato tramite un URL Vogliamo cercare l'URL all'interno del testo in modo da poter fare una richiesta per la pagina successiva L'obiettivo per la seconda unità è di essere in grado di continuare la ricerca, se ci sono molti collegamenti in una pagina, dovremmo estrarli tutti. Questo è ciò che faremo nella seconda unità, cercare di capire come proseguire con la procedura per estrarre tutti i collegamenti Nella terza unità, andremo oltre l'analisi della singola pagina. Quindi, al termine della seconda unità, riusciremo a visualizzare tutti i collegamenti presenti in una pagina e nella terza unità, collezioneremo tutti i collegamenti in modo da reiterare la procedura e garantire che il nostro web crawler riesca a raccogliere molte pagine. Quindi, al termine della terza unità, avremo costruito il web crawler. Ci saranno molti modi per costruire la nostra base di informazioni e quindi, per le restanti tre unità, analizzeremo come rispondere alle interrogazioni sulla base di informazioni Nella quarta unità, capiremo come ottenere una buona risposta in modo che se cerchi una parola chiave, tu possa ricevere in risposta la lista completa di tutte le pagine in cui quella parola chiave compare. E nella quinta unità vedremo un modo per poterlo fare, che sia estendibile nel caso di base di informazioni di grandi dimensioni. E successivamente, nella sesta unità , quello che faremo sarà non solo trovare un elenco delle pagine, ma ottenere come risultato la pagina migliore. Quindi, cercheremo di capire come pesare le pagine in cui compare la parola chiave. Bene, stiamo andando un pò oltre adesso, perché tutto ciò che dobbiamo fare per la prima unità è cercare di capire come estrarre un collegamento dalla pagina. E il motore di ricerca che costruiremo alla fine del corso sarà un motore di ricerca di tipo funzionale. Avrà le componenti principali di cui dispone un motore di ricerca come Google. Certamente non sarà potente come Google dato che vogliamo mantenere le cose semplici e avere una piccola quantità di codice da scrivere. Non dobbiamo dimenticarci che il nostro vero scopo non è tanto quello di costruire un motore di ricerca ma di usare l'obiettivo di costruire un motore di ricerca come veicolo per conoscere l'informatica e approfondire il tema della programmazione. E quindi, le cose che impareremo facendo tutto questo ci torneranno utili per risolvere molti altri tipi di problemi.