oct 11, 2010
Nutch 1.2 – Partie 3 – Configuration du moteur de recherche

Maintenant que le système est monté correctement, nous allons nous attaquer à la configuration.
Initialisation et Intégration des urls à indexer
La déclaration des sites à parcourir s’effectue dans un fichier au sein d’un répertoire ( ici « urls » ), de la manière suivante. Cette liste peut être maintenue pour supprimer ou ajouter des Urls, qui seront prises en compte lors de la prochaine indexation.
# cd $NUTCH_HOME # mkdir urls # vi urls/liste - http://www.perso.fr http://site1.perso.fr http://site2.perso.fr http://site3.perso.fr
Modification du filtrage d’urls du « Crawler »
Pour éviter d’indexer des sites non désirés, Nutch intègre des expressions régulières appliquées sur les Urls afin de les filtrer suivant leur domaine, leurs extensions, et leurs paramètres.
Cette configuration est à effectuer dans les fichiers suivants :
# vi conf/crawl-urlfilter.txt // dans le même style, modifier le fichier conf/regex-urlfilter.txt - # skip URLs with slash-delimited segment that repeats 3+ times, to break loops #-.*(/[^/]+)/[^/]+\1/[^/]+\1/ # accept hosts in MY.DOMAIN.NAME +^http://([a-z0-9]*\.)*$MONSITE.fr/ // à adapter aux domaines des sites indexés
autre fichier à modifier :
# vi conf/regex-urlfilter.txt # skip file: ftp: and mailto: urls -^(file|ftp|mailto): # skip image and other suffixes we can't yet parse -\.(js|JS|gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|mpg|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$ # skip URLs containing certain characters as probable queries, etc. #-[?*!@=] # skip URLs with slash-delimited segment that repeats 3+ times, to break loops #-.*(/[^/]+)/[^/]+\1/[^/]+\1/ # accept anything else +.
Configuration générale du Crawler
Pour la configuration générale, tout se situe dans un seul fichier $NUTCH_HOME/conf/nutch-default.xml.
# vi conf/nutch-default.xml - // Augmentation de la taille limite des fichiers à indexer <name>file.content.limit</name> <value>3145728</value> // Autorise l'enregistrement du type de fichier indexé <name>file.content.ignored</name> <value>false</value> // Déclaration du nom porté par le robot d'indexation <name>http.agent.name</name> <value>nutch-kidrek</value> <name>http.robots.agents</name> <value>nutch-kidrek,*</value> // Paramétrage du répertoire contenant la base de données du moteur de recherche <name>searcher.dir</name> <value>/opt/servers/nutch/crawl</value> // à changer // Activation des plugins à utiliser <name>plugin.includes</name> <value>protocol-(http|httpclient)|urlfilter-regex|parse-(text|html|pdf|oo|msexcel|mspowerpoint|msword|tika)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value> <name>search.response.default.lang</name> <value>fr</value>
Configuration des Parsers
Qu’est ce qu’un « parser » ? Un parser est un plugin permettant d’analyser le contenu de fichier propriétaire tels que Word,Excel,Pdf etc…
Pour activer les parsers les plus utilisés au quotidien, nous allons décommenter ceux correspondant aux fichier excel, powerpoint, word, openoffice, pdf et rss
# vi conf/parse-plugins.xml
-
<alias name="parse-msexcel"
extension-id="org.apache.nutch.parse.msexcel.MSExcelParser" />
<alias name="parse-mspowerpoint"
extension-id="org.apache.nutch.parse.mspowerpoint.MSPowerPointParser" />
<alias name="parse-msword"
extension-id="org.apache.nutch.parse.msword.MSWordParser" />
<alias name="parse-oo"
extension-id="org.apache.nutch.parse.oo.OpenDocument.Text" />
<alias name="parse-pdf"
extension-id="org.apache.nutch.parse.pdf.PdfParser" />
<alias name="parse-rss"
extension-id="org.apache.nutch.parse.rss.RSSParser" />
Initialisation de la base de données
Une fois le moteur Nutch installé et paramétré, nous allons désormais initialiser la base de données, qui comprendra toutes les pages des sites,et tous les fichiers indexés ainsi que leur contenu.
Pour faciliter la tâche de l’administrateur, un script a été mis en place qui permet d’effectuer cette tâche de manière automatisée.
#!/bin/sh export NUTCH_HOME="/opt/servers/nutch" export JAVA_HOME="/opt/server/java" export NUTCH_JAVA_HOME=$JAVA_HOME cd $NUTCH_HOME ## INDEXATION DES SITES DEPTH=5 THREADS=5 TOPN=5000 $NUTCH_HOME/bin/nutch crawl $NUTCH_HOME/urls -dir $NUTCH_HOME/crawl -depth $DEPTH -threads $THREADS -topN $TOPN
DEPTH : correspond à la profondeur utilisée lors de l’indexation. Si par exemple, le crawler parcourt une page, s’il y trouve un lien, il descendra à une profondeur de $DEPTH.
THREADS : Nombre de processus utilisés pour le parcours des URLs
JAVA_HOME : correspond au répertoire d’installation de la JDK
NUTCH_JAVA_HOME : correspond également au répertoire d’installation de la JDK
Tester l’intégrité de la base de données
Pour vérifier que l’indexation s’est terminée correctement, vous avez la possibilité de lancer les recherches via une ligne de commande.
# /opt/servers/nutch/bin/nutch org.apache.nutch.searcher.NutchBean $SEARCH_WORD $CRAWLDB_DIR
Si aucun résultat n’est retourné, nous pourrons en déduire qu’un problème est survenu lors de l’indexation. Il ne restera plus qu’à supprimer le segments déffectueux et de relancer la mise à jour de la bdd et la création des index.
Accéder à l’interface utilisateur
Nous avons configuré le moteur de recherche, nous avons généré la base de données avec les sites que nous souhaitions indexer.
Il nous reste quand même le plus important, mettre en place l’interface web permettant de lancer les recherches.
Nous avons installé un serveur d’application Tomcat un peu plus tôt, nous allons désormais y déposer le nutch.war présent.
# cd /opt/servers/tomcat/ # rm -rf webapps/ROOT # mv $NUTCH_HOME/nutch-xx.war webapps/ROOT.war
le fait de renommer le war en ROOT, permet d’accéder directement à l’interface Nutch à travers l’URL http://@IP:8080/
Nous allons d’ailleurs effectuer un petit test rapidos, afin de vérifier que tout fonctionne correctement.
# /opt/servers/tomcat/bin/catalina.sh run
Voilà le plus gros est fait.
Il ne reste plus qu’à personnaliser l’interface utilisateur (WAR), pour qu’elle s’adapte au mieux avec l’entreprise, ATTENTION à bien garder le « POWERED BY » histoire de faire un peu de pub pour les développeurs.
En effet, on peut dire qu’ils ont fait du bon boulo.
Commentaires récents