Vorwort: wieso ein Blog zu PHP, Solr und Lucene?

Wieso ein Blog zu PHP, Solr und Lucene?
Gegenstand und Ausgangspunkt all unserer Aktivitäten auf diesem Gebiet war ein Projekt um ein Nachrichtenportal und die Aufgabe, Recherchen und Analysen im Nachrichtenbestand von über 10 Million News performant zu handeln. Die MySQL Volltextsuche kam da schnell an Ihre grenzen, Oracle war keine Alternative.
Es reifte also die Frage, wie können andere (etwa die Internetsuchmaschiene google) immense Datenmengen spielend handeln?
Wir lösten den MySQL volltext mit Lucene ab. Der Performancegewinn war dramatisch. Suchen im Datenbestand, die vorher über 10 Sekunden dauerten, brauchen mittels Lucene und Solr nur selten mehr als 20ms!
Eine neue Welt tat sich auf, die es zu erobern galt und schnell fiel auf, dass deutschsprachige Seiten zum Thema Mangelware sind. Dies soll sich mit diesem Blog ein wenig ändern.

Sie haben Fragen zu Solr/Lucene/PHP? Schreiben sie uns einen Kommentar!

Freitag, 28. September 2012

Realtime Suche vs. Performance

Unser Datenbestand unterliegt dauernden Änderungen. In der Ausprägung, dass täglich mehrere tausend Dokumente hinzu kommen. Das ist für Solr per se kein Problem. Unser Ziel ist jedoch, dass neue Dokumente quasi zeitgleich auch in Solr gefunden werden. Das heißt: permanentes Hinzufügen neuer Dokumente. Bei uns passiert das als Dienst alle 10 Sekunden.
Alle 10 Sekunden führen wir ein Dataimport durch, mit dem Parameter commit=true (oder autocommit) und optimize=false,  Commit ist wichtig, damit die Daten auffindbar sind. Optimize ist wichtig, damit die Suche performant ist. Und genau hier hängt das Problem.

Montag, 24. September 2012

SolrCloud Grundlagen

Mit wachsendem Datenbestand und mit der wachsenden Verbreitung einer Anwendung werden 2 Faktoren immer wichtiger: Performance und Ausfallsicherheit. Solr bot dafür bisher (und noch immer) Solr Distributed Search und Solr Replication. Nimmt man beide Features zusammen und packt noch etwas Konfigurationsmanagment hinzu, erhält man in etwa das, was Solr Cloud ausmacht.
Früher hätte man es einfach Solr Cluster genannt, heute heißt es dann natürlich Cloud. SolrCloud!
Vorab ein paar Einschränkungen / wichtige Punkte / Probleme zu Solr Cloud:

Solr Probleme mit Umlauten

Während Lucene eine Java Bibliothek ist, ist Solr die Java Anwendung, die diese Bibliothek nutzt. Wie für jede Java Anwendung wird auch für Solr eine Laufzeitumgebung benötigt.
Idealer Weise gibt es seit einigen Versionen von Solr beim offiziellen Download eine All-in-one Variante.
Darin werden geliefert: sämtliche Bibliothken, die man für besondere Solr Funktionen (Clustering, Dataimport Handler, Velocity, ...) benötigt, die Solr Anwendung selber und Jetty. Jetty ist ein kleiner Java Anwendungsserver, in dessen man die Solr Anwendung deployen, also installieren & laufen lassen kann.
Das funktioniert in aller Regel super...
...so lange man nicht versucht, deutsche Umlaute, also äöü und ß zu verarbeiten.

Freitag, 14. September 2012

mehere Solr Suchen / Abfragen in einem Request / URL Aufruf

Bei der Arbeit mit Solr /Lucene ergibt sich oft die Anforderung, dass für mehrere Suchbegriffe eine Solr Abfrage ausgelöst werden muss. Oftmals ändern sich dabei noch nicht einmal die FilterQuery Parameter, sondern lediglich der Suchbegriff. Jede Suchanfrage beginnt dabei mit dem Verbindungsaufbei vom Client / Applikation zum Solr Server. Es läppern sich Latzenzzeiten und Overhead. Die Frage ist also: Kann man in einem einzelnen Solr Request mehrere Suchen verarbeiten / durchführen?
Ja.