Faceted Search
Neue API’s für die Navigationssuchen mit Java
Direktsuchen sind out. Über die so genannten Navigationssuchen (engl. Faceted Search) kann der Nutzer sehr viel besser nach Produkten suchen. Das geht besonders gut, wenn der Benutzer selbst noch nicht weiß, was er eigentlich will. Nur durch Klicken kann er bequem durch eine sonst unerschließbare Menge an Produkten geführt werden.
Beispiele für die erfolgreiche Nutzung von Faceted Search in Webanwendungen, finden sich heutzutage bereits zahlreich. Eine der ersten mir bekannten Webseiten ist Etoys, die mit Endeca ein kommerzielles Produkt einsetzen. Endeca ist nicht nur extrem leistungsfähig (mit eigener Server Architektur) sondern auch extrem teuer. Lizenzen fangen bei $50.000 an. Eine weitere kommerzielle Umsetzung ist Dieselpoint, deren Produkt unter anderem bei HMV eingesetzt wird. Dieselpoint ist vor allem für uns interessant, da die Software komplett in Java geschrieben ist und in jede beliebige Java (Web)Applikation integrierbar ist. Leider kostet auch die billigste Dieselpoint Lizenz bereits $20.000.
Aus Kostengründen hatten wir uns vor gut einem Jahr für die Facetmap API entschieden. In der Light Version ist Facetmap sogar kostenlos und trotzdem sehr leistungsstark. Für $799 gibt es Facetmap in der kommerziellen Version mit Datenbankanbindung. Die von uns eingesetzte Version 1.1 hat allerdings einen entscheidenden Nachteil und erlaubt nur einen konkreten Wert pro Facette. Auf Produkte runter gebrochen, kann ich beispielsweise nicht ausdrücken, dass ein Pullover rot und auch schwarz ist (gleiche Artikel Nummer - verschiedene Farben). Facetmap orientiert sich an der so genannten „Strict Faceted Classification“, die nur genau einen Wert je Attribut erlaubt.
Genau dieses Problem behebt die jüngst erschienen Version 2 von Facetmap. Am Konzept der „Strict Faceted Classification“ wird zwar festgehalten, jedoch das Prinzip des Taggings eingeführt. Produkte lassen sich mit beliebig vielen Tag’s versehen. Ein Tag ist beispielsweise die angesprochene Farbe „rot“ oder „schwarz“. Die Facetmap API erkennt getaggte Produkte und baut daraus entsprechende Suchabfragen mit Hilfe von TagGroups zusammen. Navigationssuchen die auf Facetmap 2.0 basieren, können also zukünftig mit mehreren Werten je Attribut umgehen. Was ist sonst noch neu? Facetmap 2 führt weitere Arten von Facetten ein. Gab es bisher lediglich Zahlen, Strings und Wertebereiche als Facet-Typen, gibt es zukünftig eine direktere Unterstützung für Datumsformate, Map und Textsuchen. Ein ausführlicher Testbericht folgt.
Ein neuer Fisch im Wasser kommt aus dem Haus Apache. Solr ist als Unterprojekt von Apache Lucene vor gut 6 Monaten dem Inkubator entschlüpft und unterstützt als eines von vielen Features die Möglichkeit zur Facettensuche. Von der API erfahren, habe ich gestern bei einem Besuch bei den Entwicklern von Zanox. In der Zanox Entwicklungsabteilung ist Faceted Search offensichtlich ebenfalls ein Thema. Die Berliner setzen hauptsächlich das angesprochene Open Source Produkt von Apache ein.
Solr geht im Vergleich zu Facetmap einen anderen Weg. Die Zuordnung von Attributen und Werten ist nicht hierarchisch. Vielmehr muss man sich alle möglichen Werte (rot, schwarz) als Kreise auf einer Ebene vorstellen die sich überschneiden können. In den Überschneidungen werden dann die Produkte platziert. Dadurch sind extrem viele Permutationen möglich, die komplex berechnet werden müssen. Auf der anderen Seite sind Produkte anders als bei Facetmap 1.1 nicht darauf beschränkt, pro Attribut nur einen Werte annehmen zu können. Angenehm ist auch die API, die sehr stark an Lucene angelehnt ist. Alte Lucene Hasen, werden sich also schnell zurechtfinden.
