frutch [wiki]

UtilisationNutch

Utilisation de Nutch

Une fois le moteur de recherche installé, les premiers tests peuvent être effectués à partir d'un terminal. Toutes les exécutions sont lancées par la ligne de commande, à partir du répertoire racine de Nutch.

Pour effectuer ses tests, le lecteur optera pour la commande destinée au crawling sur un intranet. En effet, deux approches son possibles :
  • crawling sur un intranet (jusqu'à un million de pages)
  • crawling sur l'entierté du web (qui nécessite des semaines d'exécution sur plusieurs machines)
Crawling d'un Intranet
Le "crawling intranet" est la solution la plus appropriée lorsque l'on désirée collecter et indexer les pages d'un petit ensemble de serveurs webs.

Cette opération doit s'effectuer en deux étapes :
  • Configurer le crawler.
  • Exécuter le crawling.
Configurer le crawler
Pour configurer le crawler, vous devez tout d'abord spécifier dans un fichier les adresses de départ, c'est-à-dire les urls à partir desquels vont s'effectuer le crawling.

Généralement, les adresses spécifiées sont simplement les noms de domaines des différents serveurs web (exemple : http://www.nutch.org/. La liste des noms de domaine doit être placée dans un fichier nommé "urls".

L'autre manipulation à opérer consiste à éditer le fichier de filtrage "conf/crawl-urlfilter.txt". Ce fichier permettra au crawler d'obtenir la liste des urls à rejeter ou à accepter.

Deux types de ligne sont possibles dans ce fichier :
  • Celles qui commencent par "+" : il s'agit des adresses que le filtre acceptera.
  • Celles précédées par "-" : ces adresses seront rejetées par le filtre.

Le crawler consultera dans l'ordre chacune des lignes jusqu'à tomber sur un filtre qui accepte ou rejète une adresse.

Les filtres sont écrits sous la forme d'expression régulières.

Exemple : +^http://([a-z0-9]*\.)*nutch.org/
acceptera tous les urls du domaine nutch.org.
Exécuter le crawling
Une fois que le crawler est configuré, il suffit d'utiliser la commande suivante pour effectuer un crawling complet de l'intranet :

bin/nutch crawl <fichier_urls> [-dir repertoire_destination_index] [-depth profondeur_de_crawl] [-threads nombre_threads]

Les éléments entre crochets sont facultatifs.

Exemple : bin/nutch crawl urls -dir crawl.test -depth 3

C'est une commande qui va effectuer un crawl en partant des urls mentionnés dans le fichier url. Le crawl s'effectuera avec une profondeur de 3 niveaux, et les fichiers de l'index seront placés dans le répertoire crawl.test.

La profondeur appropriée pour un crawling complet tourne généralement autour de 10-15, mais cela dépend totalement du serveur web à indexer.
Crawling du Web
L'architecture de Nutch a été conçue de façon à pouvoir effectuer des indexations complètes qui pourraient s'étendre dans la durée sur plusieurs semaines, et qui pourraient nécessiter plusieurs machines.
Concepts
Les données manipulées par Nutch sont de deux catégories possibles :

La base de données web. Elle contient l'information de toutes les pages connue par Nutch, ainsi que les liens existants entre ces pages.
  • Un ensemble de segments. Chaque segment est un ensemble de pages qui sont stoquées et indexées. Les données d'un segment sont d'un des types suivants :
  • Une liste contenant un ensemble de page devant être chargées (fetchlist) ;
  • Un ensemble de fichiers stockant les pages chargées (fetcher output) ;
  • Un index au format Lucene des pages stockées (Lucene-format index).
Création des répertoire
Avant toute chose, les répertoires devant contenir la base de donnée doivent être créé.

Dans les exemples suivants, la base de données sera située dans le répertoire "db". Les segments seront manipulés dans le répertoire "segments". Les commandes suivantes créent les répertoires cités :

mkdir db
mkdir segments

Amorçage de la base de données

Pour créer une nouvelle base de données, l'outil d'administration doit être utilisé par la commande suivante :

bin/nutch admin db -create

Il faut ensuite inclure une série d'adresse de base en utilisant l'outil d'injection d'adresse :

bin/nutch inject <repertoire_db> (-urlfile <url_file> | -dmozfile <dmoz_file>) [-subset <subsetDenominator>]

La commande d'injection prend en argument le chemin de la base de données, un dénominateur de sous-ensemble (subset) équivalent à la périodicité dans le fichier des adresses à inclure, ainsi que l'un des paramètres suivants :

  • urlfile : un fichier texte d'adresses ;
  • dmozfile : un fichier DMOZ.
Le DMOZ Open Directory est un fichier d'environ 200 Mo qui contient une liste de plus de 3 millions de pages. Pour utiliser ce fichier et injecter les adresses, voici la procédure complète :

wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz
gunzip content.rdf.u8.gz
bin/nutch inject db -dmozfile content.rdf.u8 -subset 3

L'argument " -subset 3" aura pour effet d'injecter une adresse sur trois du fichier DMOZ dans la base de données.

Fetching

Le fetching correspond à l'étape de chargement des pages présentes sur le web. Pour procéder à cette étape, il faut tout d'abord générer une liste de pages à être chargées dans un segment (la fetchlist), ce qui se fait par la commande suivante :

bin/nutch generate db segments

Cette liste de fetching, lorsqu'elle est générée, est placée dans un nouveau répertoire de segment. Le répertoire de segment est nommé d'après l'heure de sa création. Pour poursuivre l'étape de fetching, le nom du segment doit être sauvegardé dans la variable >s1 par la commande suivante :

s1 = 'ls -d segments/2* | tail -1'
echo $s1

Ensuite, le fetching peut être lancé sur ce segment avec la commande :

bin/nutch fetch $s1

Quand le fetching est terminé, la base de données doit être mise à jour :

bin/nutch updatedb db $s1

Maintenant, la base de données dispose des données pour toutes les pages référencées par l'ensemble initial.

La base de données contient une liste comprenant toutes les nouvelles adresses repérées dans les pages. Chacune des pages est marquée d'un score de page.

Pour trier la liste des pages, la commande d'analyse des liens doit être exécutée afin de donner la priorité de chargement (pour les fetchings ultérieurs) aux pages de plus haut score.

bin/nutch analyze db 5

Question ouverte Pourquoi 5 fois dans l'exemple donné sur le site de nutch: PourquoiCinq? ???



Pour recommencer le fetching avec les 1000 nouvelles pages de priorité la plus haute, on entre la commande suivante :

bin/nutch generate db segments -topN 1000

s2='ls -d segments/2* | tail -1'

echo $s2

bin/nutch fetch $s2

bin/nutch updatedb db $s2

bin/nutch analyze db 2
Indexation

Pour indexer chaque segment, la commande suivante doit être utilisée :

bin/nutch index $s1

bin/nutch index $s2

bin/nutch index $s3

Avant de pouvoir effectuer des recheches dans cet ensemble de segment, nous devons tout d'abord supprimer les pages doublons :

bin/nutch dedup segments dedup.tmp

Searching
La condition nécessaire pour pouvoir effectuer des recherches (une fois la servlet de Nutch installée dans le conteneur Tomcat) est de lancer l'application Tomcat de façon à permettre l'accès à la base de données.

L'application web cherche l'index dans le répertoire ./segments relatif au chemin à partir duquel on a exécuté Tomcat en ligne de commande.

Pour lancer le serveur Tomcat, la commande suivante est à entrer en ligne de commande :

chemin_tomcat/bin/catalina.sh start

Si une modification est effectuée dans le fichier WAR, il faudra relancer le serveur Tomcat pour prendre en considération les changements :

chemin_tomcat/bin/catalina.sh restart
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]