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, 20. Juli 2012

Gruppierung (Clustering), clusteringComponent konfiguration und installation

Was bedeutet Clustering

Eins vorab: wir sprechen hier nicht von Hochverfügbarkeit. Dies ist ein komplett anderes Thema, siehe SolrCloud.
Im vorliegenden Fall geht es eher um die semantische, inhaltliche Analyse von Dokumenten und deren Gruppierung:
Bei großen Datenmengen besteht oft der Bedarf, diese in Gruppen zusammenzufassen.
In unserem Beispiel geht es um ein Nachrichtensystem mit tausenden News täglich. Viel zu viel für einen Menschen. Möchte man diese Dokumente aufbereiten, so empfiehlt es sich, diese zu gruppieren. Etwa: alle Nachrichten zum Bereich Wirtschaft, Bereich Politik oder auch Thematisch: alle Nachrichten zur Bundestagswahl oder zu Fußballthema.
Jede dieser Gruppen nennt man Cluster (bestehend aus einzelnen Dokumenten).
Dabei ergeben sich folgende Fragen:
Wie erkenne ich, welche Dokumente zu einer Gruppe (einem Cluster) gehören?
Welchen Namen gebe ich letztlich der Gruppe an Dokumenten?
Bei diesen Fragen hilft uns ein Produkt sehr weiter: Carrot²

Seit Solr 3.1 ist Carrot integriert. Man spricht hier von ClusteringComponent. Aber auch mit älteren Solr Versionen kann man Carrot nutzen.