Federlesen #17: Content- und Dokumentlager der Apachen

Know-how  –  0 Kommentare

Die Apache Software Foundation stellt eine Vielzahl von Programmen zur Verfügung, um Content und Dokumente an unterschiedlichen Orten einfacher einzusammeln und weiterzuverarbeiten.

Zunehmend mehr Dokumente liegen an immer mehr Orten in unterschiedlichen Formaten vor. Bevor sich diese durchsuchen lassen, sind die Informationen einzusammeln und in eine einheitliche Form zu bringen. Das Einsammeln und Analysieren von HTML-Inhalten im World Wide Web erledigen Webcrawler (auch Spider oder Searchbot genannt). Diese Rohdaten werden dann von Volltextsuchmaschinen indiziert und für die komfortable Suche zur Verfügung gestellt.

Unter den hierfür zuständigen Apache-Projekten ist an erster Stelle Nutch zu nennen, das als Webcrawler URLs aufsucht, das Analyseergebnis in Apache Hadoop mit demMapReduce-Algorithmus vorverarbeitet und dann an Apache Solr oder Elasticsearch zur Volltextindizierung weiterleitet. Nachdem die URLs in der Datei urls/seed.txt eingetragen sind und das Analysemuster in ihr conf/regex-urlfilter.txt aufgezeichnet ist, muss noch der Namen für den Robot-Agenten in die Datei conf/nutch-site.xml gesetzt werden, zum Beispiel als

<property>
<name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>

Der Crawler wird mit dem Befehl

bin/nutch crawl urls -dir crawl -depth 3 -topN 5

gestartet. Das Ergebnis wurde bei früheren Nutch-Versionen standardmäßig in den Datei-Verzeichnissen crawl/crawldb, crawl/linkdb und crawl/segments abgelegt. Alternativ ließ es sich mit

bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5

direkt an einen Solr-Server weiterreichen.

In Nutch 2.1 wurde die Architektur überarbeitet und flexibler und skalierbarer gestaltet. Es kommt nun der polyglotte Persistenz-Mapper Apache Gora zum Einsatz, der neben relationalen Datenbanken auch spaltenorientierte NoSQL-Systeme wie HBase oder Accumulo, Schlüssel-Wert-Speicher wie Cassandra oder Dokumentenspeicher wie Solr unterstützt.

Content- und Dokumentenvielfalt beherrschen

Oft sind Content und Dokumente innerhalb von Firmen über verschiedene Systeme verstreut. Apache ManifoldCF geht deswegen noch weiter als Nutch, da es nicht nur das Web durchsuchen kann, sondern für eine große Anzahl von Systemen, wie FileNet P8 (IBM), Documentum (EMC), LiveLink (OpenText), Meridio (Autonomy), SharePoint (Microsoft), CMIS-Repository (Chemistry), JIRA, Datenbanken, Dropbox, Google Drive und E-Mail-Server (IMAP, PO3) RSS-Feeds oder Wiki-spezialisierte Konnektoren anbietet.

Die Analyseergebnisse von ManifoldCF lassen sich wiederum von Suchmaschinen wie Solr, OpenSearchServer oder Elasticsearch indizieren. Um auf die unterschiedlichen Systeme zuzugreifen, unterstützt das Projekt auch deren Autorisierungssysteme. Welche ManifoldCF-Konnektoren mit welcher Server- und Client-Version getestet wurden, ist in der Kompatibilitätsmatrix nachzulesen.

ManifoldCF verwaltet seine Konfigurationseinstellungen in einer Datenbank. Die Konfiguration der Konnektoren und darauf basierenden Jobs kann man über eine Weboberfläche vornehmen. In den Unterverzeichnissen der ManifoldCF-Installation finden sich verschiedene Möglichkeiten, um einen Server als einzelnen Prozess, als eigene Webanwendung oder im Cluster zu starten.

Am einfachsten startet der ManifoldCF-Server als einzelner Prozess mit der integrierten Derby-Datenbank, dem Jetty-Webserver und Java 7 mit

cd apache-manifoldcf-1.6\example java -jar start.jar 

Danach kann der Entwickler über http://localhost:8345/mcf-crawler-ui/ die Administrationsoberfläche öffnen und sich als Benutzer admin und dem gleichnamigen Passwort anmelden. Zunächst legt man fest, welche Repository-Konnektoren verwendet werden sollen. Neben CMIS (Content Management Interoperability Services) bietet sich ein RSS-Connector an. Danach konfiguriert man zwei Output-Konnektoren.

Neben dem Dateisystem lassen sich die Ergebnisse an Suchserver zur Indizierung weiterleiten. Jetzt kann der Entwickler den ersten Verarbeitungsjob erstellen, der einen vorher angelegten Repository- mit einem Output-Connector verbindet und angibt, wann dieser läuft und wie er mit den gefundenen Dokumenten umgehen soll. Dieser Job lässt sich darauf im Untermenü auswählen und starten. Man wählt den RSS-Connector und gibt das Ergebnis an den Null-Output-Connector weiter. Als URL dient http://www.heise.de/developer/rss/news-atom.xml. Die Ausführung des Jobs kann man sich entweder direkt unter dem Menü "Status Reports" oder als sogenannten Simple History Report anzeigen lassen.

Mit der großen Zahl von Konnektoren ist ManifoldCF eine Art "Schweizer Taschenmesser", um sich einen einfachen Zugang zu den unterschiedlichen Repositories zu verschaffen. Einige Konnektoren, wie Alfesco, LiveLink oder jcifs, sind aus Lizenzgründen separat ins Verzeichnis connector-lib-proprietary herunterzuladen und in der Datei connectors.xml auszukommentieren.