Nutch est un projet Open Source de moteur de recherche. En voici la description faite par le site francophone Frutch :
"Cette initiative a pour but de développer, déployer, intégrer et maintenir un moteur de recherche totalement transparent. C'est à dire de mettre à la disposition de chacun un moteur à la fois flexible, impartial, gratuit, coopératif et indépendant."
Nutch peut être utilisé en interne comme moteur de recherche. C'est cette utilisation que nous allons aborder ici.
Ce tutoriel décrit l'installation du JDK Java de Sun, du serveur Tomcat 5, et du moteur de recherche Nutch 0.8.1 sur une distribution Linux Ubuntu 6.10.
L'installation décrite permet de faire fonctionner Nutch et de "crawler" une URL. Libre à vous de modifier les procédures pour les adapter à vos besoins.
La version d'Ubuntu utilisée ici est la plus simple possible : une version "serveur" minimaliste, sans serveur X, sans LAMP ni serveur DNS. L'image ISO utilisée pour installer cette version est : ubuntu-6.10-server-i386.iso, téléchargeable sur les différents mirroirs Ubuntu.
Nous ne rentrerons pas dans le détail de l'installation ici du système, consultez pour plus d'informations le site ubuntu-fr, extrêmement riche en documentation et tutoriels, dont je me suis aidé pour les parties Java et Tomcat.
Sous Ubuntu, le compte root ne peut pas ouvrir de session. Pour effectuer toutes les opérations d'administration, connectez-vous avec le compte utilisateur créé à l'installation, puis faites un
sudo -s
Le mot de passe demandé est celui du compte utilisateur. A partir de là, vous travaillez en tant que root.
Par précaution, mieux vaut mettre à jour votre système avant de commencer l'installation des différents éléments. Comme nous allons avoir besoin d'utiliser des paquets Debian qui ne trouvent pas sur les sources d'installations par défaut, nous allons commencer par modifier la liste des dépôts APT.
Avec l'éditeur vi ou tout autre éditeur de fichier texte, éditer le fichier /etc/apt/sources.list, qui doit ressembler à peu près à ceci :
Nous allons ajouter les dépôts universe et multiverse à la ligne "deb" :
Enregistrer et fermer le fichier, puis passer à la mise à jour du système :
apt-get update
apt-get upgrade
Le serveur Tomcat nécessite la présence de Java.
Si les dépôts APT ont bien été configurés comme décrit plus haut, l'installation de Java JDK se fait très simplement par la commande suivante :
apt-get install sun-java5-jdk
Une fois l'installation terminée, vérifiez son fonctionnement :
java -version
Cette instruction doit vous retourner les informations sur la version de Java qui vient d'être installée.
Si vous obtenez un message d'erreur du style java : command not found, consultez cette page de ubuntu-fr pour essayer de résoudre votre problème.
Editer le fichier /etc/profile et ajouter les lignes suivantes
Vérifiez que NUTCH_JAVA_HOME pointe sur le répertoire d'installation Java de votre système.
Vous pouvez également simplifier l'accès à ce chemin en créant un lien symbolique nommé java dans le répertoire jvm, et faire pointer NUTCH_JAVA_HOME sur ce lien. La commande à utiliser pour créer le lien symbolique est :
ln -s /usr/lib/jvm/java-1.5.0-sun-1.5.0.08 /usr/lib/jvm/java
(en supposant que Java s'est installé dans /usr/lib/jvm/java-1.5.0-sun-1.5.0.08)
L'installation de Tomcat est également très simple si vous avez bien ajouté les nouveaux dépôts APT.
Tapez la commande suivante :
apt-get install tomcat5
Pour vérifier le bon fonctionnement de Tomcat après son installation, entrez l'adresse suivante dans un navigateur : http://votre_machine_ubuntu:8180
Si vous obtenez "Liste du répertoire pour /" dans un écran signé Apache Tomcat/5.x, tout va bien.
En cas de problème, consultez la documentation Tomcat de ubuntu-fr.
Commencez par télécharger le fichier nutch-0.8.1.tar.gz sur le site Apache et placez le dans /usr/lib.
Décompressez l'archive :
tar -zxvf nutch-0.8.1.tar.gz
puis créez un lien symbolique pour faciliter l'accès au dossier :
ln -s /usr/lib/nutch-0.8.1 /usr/lib/nutch
Vous pouvez supprimer le fichier nutch-0.8.1.tar.gz
Créez un dossier urls dans le dossier d'installation de Nutch, puis un fichier urls.txt dans ce dossier :
mkdir /usr/lib/nutch/urls
touch /usr/lib/nutch/urls.txt
Editer le fichier urls.txt, pour y entrer les adresses des sites que vous souhaitez indexer. Par exemple :
Editer le fichier /usr/lib/nutch/conf/crawl-urlfilter.txt.
Dans la ligne des extensions ignorées, supprimer les extensions de fichier que souhaitez indexer. Les extensions exploitables ignorées par défaut sont Microsoft Powerpoint (ppt) et Excel (xls). Vous pouvez également retirer les fichier image de type jpg, gif, auquel cas leurs noms seront indexés.
Dans la ligne # accept hosts in MY.DOMAIN.NAME, modifier en remplaçant MYDOMAINNAME par votre nom de domaine. Pour enlever la limitation au nom de domaine, supprimer le texte MYDOMAINNAME.
Enfin, en dernière ligne, si vous souhaitez supprimer la limitation au nom de domaine de la ligne précédente, faire la modification suivante :
Editer le fichier /usr/lib/nutch/conf/nutch-default.xml, trouver le paramètre http.agent.name et entrer un nom :
Pour supprimer la limitation de taille des fichiers analysés en http, trouver le paramètre http.content.limit et remplacer la valeur par défaut 65536 par -1.
Pour supprimer la limitation du nombre de tokens de l'indexer (qui peut tronquer les documents bureautiques de type Word ou Excel), trouver le paramètre indexer.max.tokens. La documentation de Nutch propose d'utiliser la variable Integer.MAX_VALUE. Mais après plusieurs essais, il semble que cette variable ne soit pas prise en compte. Pour contourner ce problème, on peut utiliser la valeur maximale d'un entier Java 32 bits signé, soit 2147483647.
Pour activer tous les plugins qui permettent d'indexer les documents bureautiques de type Microsoft Word, Excel, Powerpoint et les fichiers PDF, trouver la partie plugin.includes, et ajouter pdf|msword|mspowerpoint|msexcel ainsi que analysis-(fr) dans la ligne.
Nutch est maintenant prêt à réaliser la première indexation de votre intranet. Placez vous dans le dossier /usr/lib/nutch et lancez la commande :
bin/nutch crawl urls -dir crawldir -depth 3
où :
urls est le dossier contenant le fichier urls.txtcrawldir est un dossier que va créer Nutch pour stocker sa base de données3 est la profondeur d'indexation
L'indexation terminée, si tout s'est bien passé, un dossier crawldir a été créé dans le répertoire d'installation de Nutch.
Nous allons maintenant configurer Tomcat pour qu'il publie la page de recherche générée par Nutch. Arrêtez Tomcat :
/etc/init.d/tomcat5 stop
Supprimez le dossier ROOT du répertoire de publication de Tomcat. Par défaut ce répertoire se trouve dans /usr/share/tomcat5/webapps :
rm -rf /usr/share/tomcat5/webapps/ROOT*
(Attention à cette commande !! Mal utilisé, un rm -rf peut être dévastateur, car il supprime toute une arborescence !)
Il faut maintenant copier le fichier nutch-0.8.1.war dans le dossier webapps de Tomcat, et le renommer ROOT.war. Lorsque nous le redémarrerons, Tomcat décompressera ce fichier dans un dossier ROOT, qui contiendra l'arborescence Web de Nutch.
Nous devons modifier certains paramètres de sécurité du serveur Tomcat pour que Nutch fonctionne correctement. Cet article très complet de Sourceforge.net décrit le détail des différentes erreurs Java que l'on rencontre par défaut avec Nutch, et comment les contourner.
La configuration se fait dans le fichier /etc/tomcat5/policy.d/04webapps.policy dans lequel nous allons ajouter des autorisations. En début de fichier, trouvez la section grant { et ajoutez les lignes suivantes :
Veillez à bien respecter la casse !
En théorie, ces autorisations suffisent. Il se peut néanmoins que de nouvelles erreurs de type java.lang.NoClassDefFoundError apparaissent lorsque des recherches sont lancées. Dans ce cas, une solution est d'ajouter la ligne suivante dans la même section :
permission java.security.AllPermission;
Attention, il est fort possible que des failles de sécurité soient ouvertes par cette commande.
Se placer dans le répertoire crawldir de Nutch, et démarrer le serveur Tomcat :
/etc/init.d/tomcat5 start
Attendre quelques instants, puis arrêter de nouveau Tomcat.
/etc/init.d/tomcat5 stop
Dans le dossier /usr/share/tomcat5/webapps/, un dossier ROOT a du être créé par Tomcat. Vous pouvez supprimer le fichier ROOT.war que vous y avez copié lors de la configuration de Tomcat.
Editer le fichier /usr/share/tomcat5/webapps/ROOT/WEB-INF/classes/nutch-default.xml et trouver la section searcher.dir. Remplacer la valeur crawl par le chemin d'accès complet au répertoire crawldir de Nutch créé à l'indexation :
Faites la même modification dans le fichier /usr/lib/nutch/conf/nutch-default.xml.
Vous pouvez maintenant démarrer Tomcat, en tapant :
/etc/init.d/tomcat5 start
La page de recherche de Nutch est à présent accessible sur http://votre_machine_ubuntu:8180 . Lancez une requête et vérifiez le résultat. Si vous obtenez une erreur java.lang.NoClassDefFoundError, vérifiez les paramètres de sécurité Java de Tomcat.