Zurecht kann man den Autor dieser kleinen Lucene-Staffelung schelten, dass er das Pferd von hinten aufzäume; steht doch die Bereitstellung von Text eigentlich am Beginn des Suchprozesses und ein leerer Index wird kaum zu einer Fülle von Treffern führen. Aber soll man sich das Schönste nicht für zuletzt aufheben? Als Wiedergutmachung beschäftigen wir uns diesmal gleich mit drei Lucene-Produkten auf einmal.
In a Nutchshell
Von Apache Nutch ist am 23. März dieses Jahres die Version 1.0 herausgekommen, vorher war jahrelang Version 0.9 im Einsatz. Nutch durchforstet Webseiten, um daraus einen Suchindex aufzubauen. Ehre, wem Ehre gebührt: Nutch ist auch die Keimzelle, aus der Apache Hadoop hervorgegangen ist, seinerseits mittlerweile ein sehr erfolgreiches Projekt mit vielen Produkten.
Hadoop dient Nutch als Speicherunterbau. Es stellt ein verteiltes Dateisystem zur Verfügung, in dem Nutch die von ihm besuchten Webseiten speichert. Dieses Dateisystem, "HDFS" genannt, kann bis in dreistellige Terabyte-Größenordnungen skalieren - vorausgesetzt, man hat so viele Maschinen mit dem entsprechenden Plattenplatz. Der Index von Nutch ist also auf Größe angelegt; beim Abgrasen des Internets kann schließlich so einiges zusammenkommen.
Um den Speicher von Nutch mit Webseiten zu füllen, steht ein so genannter Crawler zur Verfügung. Dieser Batch-Job besucht und speichert, ausgehend von einer Startseite, Teile des Internets oder ein Intranet. Dabei folgt er auch Links auf andere Webseiten und spannt auf diese Weise ein Teilnetz des World Wide Web auf, weshalb Jobs dieser Art auch "Spider" genannt werden. Aus dem von Spider besuchten textuellen Inhalt wird alles für eine Suche Relevante extrahiert (Tags, CSS und JavaScript werden aussortiert) und mit Lucene indiziert.
Die von Nutch erzeugten Lucene Documents (siehe den zweiten Teil der Serie) haben die in Tabelle 1 dargestellten Felder.
| Feldname | Bedeutung |
|---|---|
| title | Titel der Seite, wie in der Kopfzeile des Browsers dargestellt |
| url | Server, von dem die Seite gelesen wurde |
| content | Indizierter Inhalt |
| anchor | Auf diese Seite verlinkende andere Seiten |
| tstamp | Wann wurde die Seite indiziert? |
Tabelle 1: Von Nutch gespeicherte Felder (Auswahl)
Als Abfrage-Frontend liefert Nutch ein WAR-File mit, das dazu geeignet ist, in jedem Tomcat oder Jetty deployt zu werden. Es stellt eine Oberfläche bereit, wie sie von den gängigen Onlinesuchmaschinen bekannt ist, inklusive Vorschau der Webseiten aus lokalem Cache, Textausschnitt aus der Webseite mit hervorgehobenen Treffern und auf die Seite verlinkenden Seiten (Abb. 1). Das ist schon eine stattliche Ansammlung von Features für ein Open-Source-Projekt.
Die Roboter kommen?
Ein recht junges Projekt aus der vielseitigen Lucene-Familie ist Apache Droids. Es befindet sich derzeit im Apache Incubator, der obligatorischen Zwischenstation auf dem Weg zu einem vollwertigen Apache-Projekt.
Droids fordert wieder den ganzen Java-Programmierer. Es stellt ein jobbasiertes Framework zur Verfügung, um einen Crawler zu implementieren. Es zielt also auf ähnliche Anwendungsfälle wie Nutch, ist allerdings durch die Möglichkeit und Notwendigkeit, selbst Hand anzulegen, wesentlich flexibler in der Umsetzung.
Im Kern besteht Droids aus einer Batch-Job-Verwaltung. Jede Droid-Klasse verwaltet einen bestimmten Typ von Job. Der CrawlingDroid zum Beispiel erhält eine Liste von URLs zum Runterladen der dahinter stehenden Inhalte. Beim Start erzeugt der Droide eine TaskManager-Instanz, die wiederum für jeden URL einen Task erzeugt. Die Tasks können sequenziell oder parallel ablaufen. Die Abarbeitung jedes Tasks beinhaltet den Zugriff auf die Ressource und gegebenenfalls die Weiterverarbeitung der Inhalte. Ein Parser-Objekt ist dafür zuständig. Ein anderer mitgelieferter Droide ist der FileRenameDroid, der viele Dateien in einem Lauf umbenennen kann. Das Anwendungsfeld von Droids geht also über das Crawling allein hinaus.
Die Dokumentation von Apache Droids ist noch nicht so weit gediehen, als dass man das Framework ohne Studium des Quellcodes einsetzen kann. Auch ein offizielles Release lässt noch auf sich warten. Droids bedient sich übrigens für das Parsen von Dokumenten auch des letzten Kandidaten in unserem Reigen, Apache Tika.




