Die flinke Feder

Relevante Apache-Projekte im Kontext: Lucene, Tika, Any23, ManifoldCF, ODF Toolkit, Apache POI

Bernd Fondermann

Der Browser öffnet sich und eine einfache Eingabezeile erscheint. In diese Zeile gibt man einen Begriff ein und sofort erscheint eine Liste mit Treffern. Meistens findet sich ganz oben schon ein interessanter Treffer, mit einem Klick ist man dort hingelangt. Das ist die Erfolgsstory für moderne Suchmaschinen.

Lucene [1], einem weit verbreiteten Suchmaschinenframework, fehlen von Hause aus Tools zur automatischen Kategorisierung von Sucheinträgen. Zwar kann ein Lucene-Indexeintrag verschiedene Felder wie „Autor“, „Überschrift“, „Volltext“ oder „Stichwort“ enthalten, jedoch müssen Programmierer oder Nutzer diese Kategorisierung zur Indizierungs- und dann wieder zur Suchzeit aktiv vornehmen, zum Beispiel durch ein Webformular, das Eingabefelder für jede Kategorie anbietet. Formulare sind aber umständlicher zu benutzen als einzelne Eingabefelder. Wie bekommen wir also Metainformationen aus den zu indizierenden Dokumenten?

Apache Tika [2] ist ein nettes kleines Werkzeug in dieser Hinsicht. Zuvorderst kann Tika Text aus allen möglichen (PDF, Office) und unmöglichen (MP3) Dateien extrahieren. Falls Tika nicht selber Autor, Titel und andere Merkmale eines Dokuments bestimmen kann, lässt es sich gerne einfach unter die Arme greifen. Es bietet dazu einen SAX-ähnlichen Event-Mechanismus. Parst Tika beispielsweise eine HTML-Seite, so wird mit jedem gefundenen XML-Tag ein Event ausgelöst. Reagiert man nun auf bestimmte Tags wie <title> oder <h2>, so kann man deren Inhalte im Metadatenobjekt zu jedem Dokument ablegen.

Tika kann die Sprache von Texten mit hoher Zuverlässigkeit bestimmen. Bei der modernen Spracherkennung werden Wörter in so genannte 3-grams zerlegt, also die Menge aller aufeinanderfolgenden drei Buchstaben eines Wortes (für „Sommer“ wäre das „som“, „omm“, „mme“ und „mer“). Da für jede Sprache das Vorkommen der verschiedenen 3-grams unterschiedlich charakteristisch ist, lassen sich mit ein paar Trainingstexten, deren Sprache bekannt ist, sehr akkurate Wahrscheinlichkeitswerte für unbekannte Texte errechnen.

Wo findet man die Dokumente, die man Tika vorwerfen möchte? Um das Internet zu durchsuchen, werden so genannte Crawler eingesetzt, die unermüdlich eine Webseite nach der anderen in friedlicher Absicht besuchen, speichern und die enthaltenen Informationen daraus extrahieren. Doch nicht jeder HTTP Request wird mit HTML beantwortet. Auf Inhalte, die RDF, CSV und andere Formate zurückliefern, hat sich Apache Any23 [3] spezialisiert, das im Apache Inkubator zu finden ist.

In vielen Fällen ist auch interessant, ein Intranet zu crawlen, wie zum Beispiel den unternehmenseigenen Dokumentenfriedhof Microsoft SharePoint. Um die untoten Dokumente darin zu finden und damit zu neuem Leben zu erwecken, sprich: es für Suchanalyse zugänglich zu machen, ist Apache ManifoldCF [4] angetreten und gerade erfolgreich aus dem Apache Inkubator entschlüpft.

Trifft ManifoldCF auch mal auf ein Dokument, das mit der OpenOffice-Produktfamilie erzeugt wurde, so kann die Library ODF Toolkit [5] beim Lesen helfen. (Apache OpenOffice befindet sich ebenso im Apache Incubator wie ODF Toolkit) ODF Toolkit ist aber leichtgewichtig und kann als Bibliothek eingebunden werden, während OpenOffice nur in seinem eigenen Prozess läuft. Für Microsoft-Office-Dokumente ist mit dem bewährten Apache POI [6] seit Jahren eine Java Lib verfügbar.

Es gibt also viele Projekte, die man nutzen kann, um seine Suche mit mehr Inhalten und Metainformationen zu veredeln. In der nächsten Ausgabe setzen wir die Projektübersicht mit Werkzeugen fort, die aus den dem Dokument abgerungenen Inhalten weitergehende Bedeutung ableiten.

Bernd Fondermann (bernd [at] zillion-one.com) ist freiberuflicher Softwarearchitekt und Consultant in Frankfurt am Main und Member der Apache Software Foundation. Er beschäftigt sich mit innovativen Open-Source-Technologien wie Apache Hadoop oder Lucene und bietet unter zillion-one.com einen Big-Data-Hosting-Service an.
Geschrieben von
Bernd Fondermann
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.