Indicizzazione intero Web

Per fare il crawling di tutto il web o anche di una sua piccola percentuale, sarebbero necessari cluster in funzione per varie settimane e un’ingente disponibilità di hardware, tuttavia il meccanismo che Nutch mette a disposizione è di semplice utilizzo e si può applicare anche a domini di alcune decine di migliaia di pagine.

Innanzitutto, una breve descrizione dei file creati da Nutch; ci sono due tipi di strutture dati:

·       db è il database contenente le informazioni sulle pagine visitate dal crawler e sui link.

·       segments mantiene le pagine scaricate e indicizzate ed è composto da altre entità.

fetchlist:contiene le Url che dovranno essere prelevate.

fetcher: è un insieme di file con le pagine scaricate.

index: è l’indice in formato Lucene.

Questa struttura è quella creata durante il processo di crawl, precedentemente visto, che con il metodo per l’intero web dovrà essere costituita passo dopo passo.

  1. Creare le directory db/, segments/ e il database vuoto:

$ mkdir segments

$ mkdir db

$ $NUTCH_HOME/bin/nutch admin db create

  1. Inserire nel db le URL da scaricare, passando al comando inject un file di testo oppure un file DMOZ (contenente URL suddivise in categorie); tali URL devono rispettare regole simili a quelle viste precedentemente che si trovano nel file $NUTCH_HOME/conf/regex-urlfilter.txt:

$ $NUTCH_HOME/bin/nutch inject db –urlfile url

  1. Con le informazioni inserite nel db, generare la lista delle pagine da scaricare (fetchlist):

$ $NUTCH_HOME/bin/nutch generate db segments

  1. In seguito, scaricare le pagine e aggiornare il database con tali informazioni; è utile dichiarare una variabile d’ambiente seg1 con il nome della sottodirectory di segments creata dalla generate:

$ seg1=`ls -d segments/2* | tail -1`

$ $NUTCH_HOME/bin/nutch fetch $seg1

$ $NUTCH_HOME/bin/nutch updatedb db $seg1

  1. Per continuare in profondità il crawling, Nutch inserisce un meccanismo molto funzionale di analisi dei link finora acceduti; praticamente con il comando analyze vengono ordinati i successivi link da prelevare in base alla loro importanza, intesa come numero di link in ingresso in rapporto a quelli in uscita (tipo PageRank):

     $ $NUTCH_HOME/bin/nutch analyze db 3

Generare la fetchlist come al passo 3), ma con la selezione di un sottoinsieme di URL, ordinate dal precedente processo di analisi.

$ $NUTCH_HOME/bin/nutch generate db segments -topN 20

Scaricare nuovamente le pagine e aggiornare il database:

$ seg2=`ls -d segments/2* | tail -1`

$ $NUTCH_HOME/bin/nutch fetch $seg2

$ $NUTCH_HOME/bin/nutch updatedb db $seg2

Ripetere il passo 5) tante volte, in base alla profondità che si vuole dare allo spidering. Per ogni iterazione si deve dichiarare una nuova variabile d’ambiente.

  1. Dopodiché costruire l’indice, ripetendo per ogni variabile d’ambiente dichiarata (contenente una sottodirectory di segments):

$ $NUTCH_HOME/bin/nutch index $seg1

….

$$NUTCH_HOME/bin/nutch index $segN

  1. Infine, Nutch ha un ottimo meccanismo d’eliminazione dei duplicati utilizzando la funzione hash MD5 per ogni URL; in altre parole, quelle che creano uno stesso risultato dopo l’applicazione di tale funzione sono pagine duplicate.

 $ $NUTCH_HOME/bin/nutch dedup segments duplicati.tmp.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Time limit is exhausted. Please reload CAPTCHA.