Das war die Berlin Buzzwords 2011

Bei der zweiten Berlin Buzzwords Konferenz dreht sich wieder alles um Search, Store und Scale in großen Datenmengen. Kurz: Es ging um Big Data und damit um die Basistechnologien für den Aufbau und Betrieb von Internet-Suchmaschinen, Social Networks, large scale eCommerce und die Analyse von Massendaten aus Wissenschaft und Forschung.

Die Konferenz richtet sich dabei speziell an Nutzer und Entwickler von Open Source Lösungen in den genannten Bereichen, mit einem Schwerpunkt auf die Arbeit der Apache Foundation und der ihr angegliederten Open Source Projekte mit den entsprechenden Schwerpunkten.

Das Wort “Buzzwords” im Titel der Konferenz zeugt dabei von einer gesunden Portion Selbstironie, da zwar ausschließlich Themen wie die vielbeschworene Cloud und die häufig als Allheilmittel überhöhten NoSQL-Datenkbanken und andere “Buzzword-Technologien” Thema sind, aber Umfang und Tiefe mit der sie behandelt werden weit über das gewohnte Marketing-Geschwätz hinaus gehen.

Die Buzzwords als hands-on Konferenz

Die Konferenz fand diesmal in der Urania statt und dauerte zwei Tage (6. bis 7. Juni 2011). An den Tagen vor- und nach der Konferenz fanden verschiedene Trainings und Hackathons/Workshops statt, die von den zahlreichen Partnerfirmen getragen wurden. Einen Überblick darüber kann man sich hier verschaffen. An dieser Stelle sei nur soviel gesagt: Wer die dafür nötige Zeit investieren konnte, der hatte die Möglichkeit sich binnen weniger Tage einen tiefen Einblick in die einzelnen Themengebiete zu verschaffen und wertvolle Kontakte zu knüpfen.

Da mein Abstecher nach Berlin leider nicht den Besuch der einzelnen Workshops beinhaltete, konzentriere ich mich mit diesem Bericht auf die Themen während der Konferenz. Ich möchte damit vor allen den Daheimgebliebenen einen Überblick über die einzelnen Vorträge bieten und werde den Fokus dabei natürlich vor allem auf das Themenfeld Suche legen.

Montag (Tag 1 der Konferenz)

Der Montag wurde von der Welcome session im Humboldtsaal des Urania eingeläutet und die Organisatoren Isabel Drost, Jan Lehnardt und Simon Willnauer begrüßten die Teilnehmer.

Danach gab Douglas Cutting, seines Zeichens unter anderem Initiator von Apache Lucene, Co-Autor von Apache Nutch und derzeit bei Cloudera hauptberuflich mit seinem jüngsten Kind Apache Hadoop beschäftigt, mit seiner Keynote den Startschuss für Tag 1.

Er konzentrierte sich in seinem Talk auf das Hadoop-Ökosystem und die Entstehungsgeschichte von Lucene, Nutch, Mahout und mehr. Gespickt mit Überlegungen rund um Bandbreite, Storage und Map/Reduce schärfte er das Verständnis des Auditoriums für die Herausforderungen die mit Big Data Computing einher gehen. Das Big Data an sich eine Art sich selbsterfüllende Prophezeiung darstellt fasste Cutting mit dem Satz: “We don’t have Hadoop because we have large data; we have large data because we have Hadoop.” gut zusammen.

Nach einer kleinen Kaffeepause ging es dann über drei Tracks verteilt ans Eingemachte und die Konferenz gabelte sich in Search, NoSQL und einen bunt gemischten Track auf. Allein am ersten Tag spulten die Speaker über 20 verschiedene Vorträge in den einzelnen Sessions ab und es ist weder sinnvoll noch liegt es im Rahmen meiner Möglichkeiten euch Details zu den einzelnen Vorträgen zu bieten. Um beim Thema Search zu bleiben möchte ich euch aber folgende Talks empfehlen:

  • Otis Gospodnetić lieferte einen guten Überblick über die Analyse und redaktionelle Pflege von bestehenden Suche-Lösungen. Wer sich noch nicht mit diesem Thema auseinander gesetzt hat, dem sei sein Talk wärmstens empfohlen.
  • Direkt nach Otis Talk widmete sich Andrzej Białecki dem Thema distributed search. Er beleuchtete dabei vor allem die damit einhergehenden Herausforderungen wie etwa globale IDF-Berechnung, globale Facettierung, Merging/Ranking von Ergebnislisten und vielen anderen harten Nüssen, die es noch zu knacken gilt.
  • Nach dem Mitagessen lieferte Mark Millers Talk Infos darüber wie man dem Solr Search Server Beine macht. Kurz gesagt: Alles zum Cache-Tuning mit Solr.
  • Chris Male widmete sich in seinem Vortrag der Solr Client-Library SolrJ. Wer seine Search-Applikation in Java schreibt, der sollte einen Blick riskieren.

Dienstag (Tag 2 der Konferenz)

Der Dienstag wurde von Ted Dunnings ebenso geistreicher wie unterhaltsamer Keynote über die Gegenwart und Zukunft von Hadoop eröffnet. Er knüpfte an Doug Cuttings Keynote vom Vortag an und beleuchtete Gegenwart und Zukunft des Hadoop Ökosystems. Wer wissen möchte was die derzeitige “Suckitude”-Scale von Hadoop ist, warum “Disky-Stuff” tricky ist oder vielleicht einfach ein Freund klarer Worte ist, der sollte sich unbedingt den Talk in der Videoaufzeichnung ansehen und danach in Teds Blog weiter lesen.

Im Anschluss lieferte Uwe Schindler im leider viel zu kleinen Einsteinsaal einen großartigen Talk über Lucene 4.0 und dem sogenannten Flexible Indexing ab. Der Talk war so tiefgreifend technisch, dass mir danach der Kopf schwirrte. Gleichzeitig war ich aber mehr als zuvor davon überzeugt, dass die Lucene-Entwickler genau wissen wo die Reise hin geht. Für die Techies unter euch ist sein Talk highly recommended. Ganz generell waren die Talks im Einstein-Saal dem Namen unseres großen Physikers sehr angemessen. Weitere talks an Tag 2 auf dem Suche-Track:

  • Dawid Weiss sprach über DocValues/Column Stride Fields in Lucene 4.0
  • Nach dem Mittagessen ging es gleich weiter und Dawid sprach über finite state automata in Lucene und welche Anwendungsgebiete es hierfür gibt.
  • Shay Banon sprach über sein “bonsai cooles” ElasticSearch Projekt. Eine verteilte, RESTful Search Engine auf Lucene-Basis. Der Vortrag war im Übrigen so gut besucht, dass er kurzerhand in einen größeren Saal verlegt werden musste.
  • Im Anschluss lieferte Lukáš Vlček ein hands-on Beispiel, wie man mit Elastic Search ein öffentliches Mailinglisten-Archiv indexieren und per AJAX-Frontend durchsuchbar machen kann.
  • Wer sich bereits an Tag 1 den Talk von Otis Gospodnetić angehört hatte, der dürfte auch an Hannes Kruppas Talk über das A/B Testing bei Internet-Suchmaschinen interessiert gewesen sein.
  • Über simples Stemming für die Relevanzoptimierung geht Christoph Goller mit seinem Talk hinaus und zeigt wie man mit Morphologie und named entity extraction bessere Suchergebnisse erhält.
  • Abschließend zeigte Stanislaw Osinski wie man mit dem search results clustering plugin in Solr dynamische Cluster mit verwandten Dokumenten bilden und auf dieser Basis ansprechende Suche-Frontends bauen kann.

Fazit

Das war also “meine” Berlin Buzzwords 2011. Wie schon 2010 war die Konferenz im Herzen Berlins wieder ein echter Rundumschlag in Sachen Open Source Search. Mittlerweile sind die Links zu den meisten Folien online und die Videos der einzelnen Vorträge trudeln auch langsam ein.

Den Veranstaltern sei an dieser Stelle für den nahezu reibungslosen Ablauf gedankt und ich freue mich bereits auf die Berlin Buzzwords 2012 .

Weitere Stimmen

Hier noch ein paar gesammelte Stimmen zur Berlin Buzzwords 2011

Schnellere und bessere Suchergebnisse für WordPress mit dem WP Search Plugin

Die obligatorische Suchbox am rechten Rand meines Blogs wird seit heute von Kenny Katzgrau’s WP Search Plugin befeuert.

Laut dem Backend des Plugins umfasst mein Blog im Augenblick 22 Artikel. Das ist natürlich nicht viel und die Standardsuche von WordPress kommt aus Sicht der Performance damit natürlich auch wunderbar zurecht. Aber zum einen ist das hier ja das Suchkultur-Blog (und nicht etwa das JOINKultur-Blog) und zum anderen bin ich immer ein Freund der optimalen Lösung für ein Problem. Eine indexbasierte Suche schlägt die LIKE-Abfragen einer typischen WordPress-Datenbank in Sachen Performance. Dazu kommt, dass eine Datenbank designbedingt auch gar nicht dafür gemacht ist die gefundenen Dokumente auch inhaltlich zu bewerten und ein Ranking der relevantesten Treffer zu erstellen. Die Nutzung von Algorithmen zur Relevanzoptimierung der gefundenen Suchergebnisse ist dabei ein nicht zu unterschätzender Vorteil gegenüber der reinen Datenbanklösung und verbessert die Suchergebnisse bereits spürbar und ohne die Notwendigkeit von manuellem Feintuning. Darüber hinaus gibt es bei Datenbankgestützten Lösungen auch in aller Regel keine auf Suchanfragen spezialisierte Abfragesprache, die es dem Nutzer erlauben würde dokumentorientierte Suchanfragen elegant zu formulieren und beispielsweise bestimmte Blogartikel innerhalb eines bestimmten Zeitraums zu finden und andere hingegen auszuschließen. Dagegen kann ein Entwickler auf der Basis einer Abfragesprache für Suchmaschinen diese und weitere Anwendungsfälle problemlos abdecken.

Im Einfachsten Fall bestückt man dafür einfach Hyperlinks mit bestimmten Suchwörtern. Ein Beispiel:

http://suchkultur.de/blog/?s=Lucene

sucht beispielsweise auf diesem Blog nach dem Keyword “Lucene”. Das ließe sich nun aber auch mit einer einfachen Datenbanksuche à la [...] LIKE “%Lucene%”; erledigen. Um von der Abfragesprache von Lucene zu profitieren ist es sinnvoll in etwa so etwas zu bauen:

http://suchkultur.de/blog/?s=Lucene%20-whoosh

Damit suchen wir nach Lucene, finden aber nicht mehr den Artikel über Whoosh, in dem auch kurz von Lucene die Rede ist.

Aber es geht natürlich noch detailierter: Mit (“lucene” AND NOT title:”whoosh”) AND NOT python bekommt ihr alle Ergebnisse geliefert, die das Wort “lucene” in den durchsuchbaren Feldern haben und nicht Wort “whoosh” im Titel und – etwas salopp hinten dran gestellt – nichts mit “python” zu tun haben.

Ob diese direkte Ansprache der Suche per Hyperlink oder über eine formularbasierte “Expertensuche” oder sogar über dynamische Navigationselemente in bekannter Web 2.0 Manier geschieht, bleibt den Wünschen des Blogbetreibers überlassen.

Das alles und noch mehr leistet aber beispielsweise ein Lucene-Index schon out-of-the-box. Einen kleinen Eindruck der Möglichkeiten dieser Abfragesprache findet man in der Dokumentation der Query Parser Syntax.

WP Search basiert auch auf Apache Lucene. Dabei handelt es sich um eine modulare Programmbibliothek zur Erstellung indexbasierter Suchmaschinen-Anwendungen.

Die Installation ist ganz einfach. Man sucht sich das Plugin über die in WordPress enthaltene Plugin-Suche, Installiert & aktiviert es und baut den ersten Index. Der Index existiert natürlich unabhängig von der eigentlichen WordPress-Datenbank und kann jeder Zeit neu erstellt werden. Bei mir  hat der Bau des initialen Indexes vom Mausklick auf den Build-Button bis zur Rückmeldung im GUI, dass der Index fertig sei, nur etwa 5 Sekunden gedauert. Damit ist die Basis da. Ab jetzt wird jeder neu verfasste Artikel automatisch nach der Publikation sowohl in die Datenbank, als auch in den Suchindex geschrieben.

Im Frontend verändert sich dadurch zunächst nichts. Davon, dass man nun eine echte, indexbasierte Suchmaschine an das eigene Blog geklemmt hat, bekommt der Webmaster nichts mit.

Wenn jemand von euch WP Search auf einem Blog mit deutlich mehr Artikeln und Kommentaren einsetzt, würde ich mich über ein Feedback in den Kommentaren sehr freuen. Besonders interessant wären Vorher/Nachher Messungen der Geschwindigkeit beider Lösungen (Datenbank vs. Index) und eure Beobachtungen im Hinblick auf die Relevanz der gelieferten Ergebnisse und welche Einstellungen ihr in der Plugin-Konfiguration verwendet.