Nutch als Webapplikation Installation der Default Suchmaschine - Eine Anleitung Dominic Jehle, Danny Rehl, Saskia Vola 03.01.2010
Contents 1 Einleitung 2 2 Tomcat 6.0 2 3 Nutch 1.0 5 4 Nutch und Tomcat 10 5 Tipps 11 1
1 Einleitung Für die Installation von Nutch wird das Java RE benötigt. Die Installationsanleitung wurde auf Ubuntu 9.04 und 9.10 getestet und bezieht sich auf Nutch als Intranet-Suchmaschine. 2 Tomcat 6.0 Tomcat 6.0 core-tar.gz von der Seite Tomcat-Download herunterladen. In einen beiebigen Ordner entpacken (z.b. usr/share) Die Umgebungsvariablen zum Tomcat Ordner setzen: export CATALINA_BASE=/usr/share/apache-tomcat-6.0.20 export CATALINA_HOME=/usr/share/apache-tomcat-6.0.20 export CATALINA_TMPDIR=/usr/share/apache-tomcat-6.0.20 Dann außerdem noch den Pfad zum Java Runtime Environment (Ordner, in dem das Verzeichnis jre/ liegt) angeben, z.b.: export JRE_HOME=/usr/lib/jvm/java-6-sun So wird dann Tomcat gestartet: \$CATALINA_HOME/bin/catalina.sh start Jetzt localhost:8080 im Browser eingeben. Wenn alles richtig gemacht wurde, wird man mit einer Willkommensnachricht begrüßt. 2
Jetzt muss man sich selbst noch als Manager/Admin eintragen: Dafür in CATALINA HOME/conf die Datei tomcat-users.xml editieren. Sich selbst als neuen Manager und Administrator (nicht im Kommentar!) eintragen. <role rolename="manager"/> <role rolename="admin"/> <user username="user" password="<klartext>" roles="manager,admin"/> Dann Tomcat neu starten. $CATALINA_HOME/bin/catalina.sh stop $CATALINA_HOME/bin/catalina.sh start Im Browser localhost:8080/manager/html eingeben. Dann den Benutzernamen mit dem neu angelegten Passwort eingeben. Wenn alles geklappt hat, sieht man den Tomcat Manager. 3
4
3 Nutch 1.0 Nutch 1.0 von der Seite Nutch-Download herunterladen. An einen beliebigen Ordner entpacken, z.b. ins Home Verzeichnis. Nun die Umgebungsvariable zum Java Runtime Environment setzen, in dem /bin/java liegt:! Achtung: Nutch fügt automatisch /bin/java an den Pfad an! export NUTCH_JAVA_HOME=/usr/lib/jvm/java-6-sun/jre Zum Testen, ob Nutch nun funktioniert im Nutch-Verzeichnis bin/nutch ausführen. Erscheint in der Konsole eine usage-anweisung hat man alles richtig gemacht. 5
Jetzt kann man bereits mit dem Crawlen beginnen. Entsprechend dem Tutorial der Version 0.8 von Nutch (Nutch-Tutorial) die Schritte im Kapitel 3 ausführen. Einen Ordner namens urls im Nutch Ordner anlegen. Darin eine Datei namens example erzeugen. In diese Datei soll dann eine Seed-URL gelegt werden (Achtung: Danach eine New-Line!), z.b. http://www.cl.uni-heidelberg.de/ Nun in der Datei conf/crawl-urlfilter.txt MY.DOMAIN.NAME überschreiben mit der Seed-URL als regulären Ausdruck. 6
Als nächstes noch die Datei conf/nutch-site.xml editieren: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>http.agent.name</name> <value>aname</value> <description> HTTP User-Agent request header. MUST NOT be empty - please set this to a single word uniquely related to your organization. NOTE: You should also check other related properties: http.robots.agents http.agent.description http.agent.url http.agent.email http.agent.version 7
and set their values appropriately. </description> </property> <property> <name>http.agent.description</name> <value>adescription</value> <description> Further description of our bot- this text is used in the User-Agent header. </description> </property> It appears in parenthesis after the agent name. <property> <name>http.agent.url</name> <value>yourwebsite</value> <description> A URL to advertise in the User-Agent header. This will appear in parenthesis after the agent name. Custom dictates that this should be a URL of a page explaining the purpose and behavior of this crawler. </description> </property> <property> <name>http.agent.email</name> <value>info@example.com</value> <description> An email address to advertise in the HTTP From request header and User-Agent header. A good practice is to mangle this address (e.g. info at example dot com ) to avoid spamming. </description> </property> <property> <name>searcher.dir</name> <value>pathto/yourcrawldirectory</value> <description>your crawl directory.</description> </property> </configuration> Die letzte Property (searcher.dir) enthält den Pfad zum crawl-directory. 8
Darin werden die gecrawlten und indizierten Dateien abgelegt. Jetzt kann man einen Testcrawl starten: bin/nutch crawl urls -dir yourcrawldirectory -depth 3 -topn 50 Am Ende sollten sich im yourcrawldirectory folgende Ordner befinden: crawldb index indexes linkdb segments Wenn das soweit geklappt hat, kann man auf der Konsole die Suche ausprobieren (Tutorial Kapitel 4.5.). bin/nutch org.apache.nutch.searcher.nutchbean Suchbegriff Auf der Konsole wird dann die Ergebnisliste in die Standardausgabe geschrieben. Jetzt läuft Nutch als lokale Anwendung unabhängig von Tomcat. 9
4 Nutch und Tomcat Im Kapitel 4.5 des Tutorials ist beschrieben, wie man aus Nutch eine Webanwendung baut. rm -rf $CATALINE_HOME/webapps/ROOT* cp PathToNutch/nutch-1.0/nutch-1.0.war $CATALINA_HOME/webapps/ROOT.war Jetzt noch mal das searcher.dir wie in der XML Datei nutch-site.xml von nutch auch nach dem Tomcat-Neustart unter $CATALINA_HOME/webapps/ROOT/WEB-INF/classes in nutch-site.xml eintragen. Tomcat erneut neustarten und dann wieder den Tomcat-Manager öffnen. in Deploy directory or WAR file located on server einen Context Path angeben. Der erscheint dann in der Application Liste, z.b.: /search Dann noch in WAR or Directory URL den Pfad zur soeben kopierten ROOT.war angeben, z.b.: $CATALINA_HOME/webapps/ROOT.war Und Deploy anklicken. Wenn alles geklappt hat, dann erscheint /search als Anwendung in der Applications- Liste. Zur Anzeige der eigenen Suchergebnisee noch reload klicken bei /search im TomcatManager. Außerdem befinden sich in $CATALINA HOME/webapps dann zwei neue Einträge: search/ und search.war Jetzt im Browser http://localhost:8080/search/ eingeben und fertig ist die Nutch-Default-Suchmaschine! Viel Spass! 10
5 Tipps Es empfiehlt sich ein Setup-Script zum Neustarten von Tomcat zu schreiben, z.b. export NUTCH_JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre export CATALINA_BASE=/usr/share/apache-tomcat-6.0.20 export CATALINA_HOME=/usr/share/apache-tomcat-6.0.20 export CATALINA_TMPDIR=/usr/share/apache-tomcat-6.0.20 export JRE_HOME=/usr/lib/jvm/java-6-sun \$CATALINA_HOME/bin/catalina.sh start wobei hier (exemplarisch durch 2 verschiedene Java-Versionen in NUTCH JAVA HOME und JRE HOME angedeutet) irgendeine Java-Installation ausgewählt werden kann. Empfohlen ist aber auf jeden Fall einer dieser beiden angegebenen. Bei einer crawl-aktualisierung muss die search-applikation mittels reload aktualisiert werden! Zum Anzeigen des geparsten Textes: bin/nutch readseg -dump crawl/segments/20091221161208/ dump -nocontent -nofetch -noparse -noparsedata 11