Falls man die Funktion zum Löschen eines Eintrags sucht, sollte man im Hinterkopf haben, dass man eigentlich nicht aus einem Suchindex löscht. Intern werden gelöschte Einträge in einer separaten Datei gehalten. Bei größeren Löschaktionen sollte man den Index neu aufbauen.
Differenziert suchen
Wer sich für den Einsatz eines auf Lucene basierenden Suchindexes entscheidet, entscheidet im gleichen Zug auch, dass die Daten auf verschiedenste Art wieder gesucht werden können. Die meisten Nutzer kennen nur das Eingabefeld, in das man ein oder zwei Wörter eintippt, aber dass man mitunter auch sehr differenziert suchen kann, ist ihnen nicht bewusst. Hier hilft nur konsequente Aufklärung – denn Lucene kennt sowohl Term- und Phrasensuche mit Booleschen Operatoren als auch eine Wildcard-Suche, Fuzzy-Suche oder Bereichsanfragensuche. Eine Übersicht findet sich in Tabelle 2: Die Lucene Suchabfragesyntax.
Tabelle 2: Die Lucene-Suchabfragesyntax
Die drei Fragezeichen
Derzeit existieren drei Möglichkeiten, um sich Lucene zu Nutze zu machen, und die drei Möglichkeiten könnten nicht unterschiedlicher sein. Dabei sollte noch erwähnt werden, dass hier keine Lösungen berücksichtigt werden, bei denen eine Middleware-Kommunikation via SOAP oder XML-PRC eingesetzt wird, denn diese Art des Datenaustausches ist zwar nach wie vor möglich, stellt aber aufgrund des nicht zu vernachlässigenden Kommunikations-Overheads zwischen den Objekten die langsamste und somit auch die schlechteste Alternative dar. Im Folgenden sollen die drei sinnvollen Wege kurz erläutert werden.
Original Lucene mit PHP-Java-Bridge
Die PHP-Java-Bridge (PJB) ist eine Entwicklung, mit der man Java-Programme starten kann und die dann zu diesen Prozessen eine Kommunikation via JSR 223 herstellt. Dabei existiert die PJB schon sehr lange und wurde früher als Extension in PHP eingebunden. Inzwischen ist das nicht mehr notwendig und die Software installiert sich komplett neben einer PHP-Installation. Dazu baut die Brücke einen Kommunikationsserver auf localhost:8080 (oder einem anderen Port) auf, und auf der PHP-Seite werden über ein PHP-include() entsprechende Kommunikationsroutinen bereitgestellt. Die PJB als solche benötigt mindestens Java 1.4 und kann auch ohne Apache oder Tomcat laufen. Die Anwendung von Lucene ist nur eine Einsatzmöglichkeit. Für Windows-Benutzer gibt es einen kleinen „HowTo“-Film auf der Homepage der Entwickler und im Programmpaket haben die Entwickler zwei Beispielprogramme für den Einsatz von Lucene beigefügt.
Die Vorteile dieser Lösung sind, dass die Installation parallel zu einem schon existierenden System vorgenommen werden kann und man Zugriff auf alle von Lucene bereitgestellten Java-Klassen hat. Ferner kann man somit immer das aktuelle Lucene-Release verwenden. Der Nachteil ist, dass man sich doch ein wenig in Java auskennen muss und die Kommunikation über einen Zwischenserver läuft. Als etwas aufwändigere Alternative existiert noch die freie PHP-Java-Brücke der Firma CosmoCode, die aber mehr eine Interprozesskommunikation zwischen Java- und PHP-Objekten darstellt. Hier muss der Benutzer sich selber um die Programmierung und den Aufbau des PHP-Frontend und des Java-Backends kümmern.