Magefinder – die bessere Suche für Magento (Teil 1)

Es hat eine Weile gedauert, aber seit einem Monat lässt mich die Idee nicht mehr los. Die Schwächen der Magento Suche mit den Stärken von Amazon Cloudsearch zu verbinden – und das auch zu einem leistbaren Preis. Die Idee von Magefinder war geboren…

Wie alles begann

Ich arbeite nun seit 6 Jahren mit Amazon Webservices und genauso lang mit Magento. Als wir Flimmit gegründet haben, war die Entscheidung noch offen, welches e-Commerce System wir für unseren Video-on-Demand Shop verwenden werden. Dabei hat ein Projektmitglied von dem “neuen” Projekt “Magento” gehört, das war mein erster Kontakt mit www.magentocommerce.com.

Zusätzlich war es für uns als Startup eine Herausforderung einen skalierbaren Streamingservice anzubieten, ohne Tausende von Euro in ein Datencenter zu investieren. Da wir als Gruppe sehr technisch aufgestellt waren, kamen wir rasch zum Entschluss wenn möglich alles selber zu programmieren. Damals war auch AWS noch sehr überschaubar vom Angebot und wir verwendeten nur die klassischen Services EC2 und S3.

Nach vielen Jahren mit Magento und Amazon Webservices hatten wir bei Flimmit viele Gelegenheiten immer neue Dienste zu testen und schlussendlich in unsere Plattform zu integrieren. Und wir sind noch lange nicht am Ende…

Warum die Magento Suche “nicht so gut” ist

Magento hat als e-Commerce Software viele Features, wo eine Suche natürlich nicht fehlen darf. Ich habe mich lange Zeit nicht damit beschäftigt, sonder höchstens die Einstellungen im Backend konfiguriert. Dabei ist aber immer wieder aufgefallen, dass die Ergebnisse zwar stimmen, aber die Frage der Relevanz nicht wirklich beantwortet wird.

Bei genauerer Betrachtung der Suche habe ich herausgefunden, dass Magento eine Tabelle “catalogsearch_fulltext” beinhaltet, um die durchsuchbaren Attribute der Produkte dort zu speichern. Es gibt dazu ein Feld “data_index” mit dem Typ “longtext”, wo alle Werte mit einem Pipe “|” getrennt gespeichert werden.

Hier liegt der Verdacht nahe, dass zwar Produkte gefunden werden, aber wahrscheinlich nicht immer die “richtigen”. Das Feld “data_index” hat auch einen FULLTEXT-Index, damit eine Suche erst überhaupt möglich ist. Dazu gibt es noch diverse Einstellungen im Backend, um die Suche nach seinen Bedürfnissen rudimentär anpassen zu können.

Magento schreibt die gefundenen Produkte in die Tabelle “catalogsearch_result”. Es wird dazu nur die Verknüpfung zwischen der Suchanfrage, die in der Tabelle “catalogsearch_query” verwaltet wird, und der Produkt-Id abgelegt. Zusätzlich ist noch Platz für einen Relevanzwert, der aber bei der Datenbank-Suche immer 1 ist.

Für die Darstellung wird die ganz normale Produktkollektion von Magento verwendet, gefiltert um die Product-Id’s aus der Ergebnistabelle. Alle weitere Informatione und die Filterungmöglichkeiten werden außerhalb des CatalogSearch Models geholt.

Ich kenne nur wenige Shopbetreiber, die wirklich damit zufrieden sind. Wir als Flimmit haben selber unterschiedliche Community-Module evaluiert, um die Relevanz der Ergebnisse zu optimieren. Entweder war das Service bzw. das Modul zu teuer oder die Verwaltung zu aufwendig. Somit war die Freude groß, als CloudSearch geboren wurde.

Was ist Amazon Cloudsearch

Seit mehr als einem Jahr bietet Amazon nun einen Suchdienst, der vollständig von AWS verwaltet wird. Das bedeutet, dass man eine Suchinstanz startet, die Indexfelder definiert und Dokumente hochlädt. Und nach kurzer Zeit kann man Suchanfragen stellen, um die passenden Dokumente zu erhalten.

Amazon Cloudsearch ist natürlich noch mehr. Je nach Anzahl der Dokumente und Frequenz der Anfragen skaliert Cloudsearch automatisch seine Suchinstanzen und Suchpartitionen – und das vollautomatisch. Dazu kann man noch Regeln für eine Gewichtung anlegen, Textoptionen wie Stopwords, Stemming und Synonyms festlegen und Zugriffsrechte für Indexierungs- und Suchanfragen anlegen. Auch die Suche hat noch die klassischen Features wie “Boolean Queries”, Facetierung und Paging.

Da war für mich die Idee nahe, die beiden Systeme zu verbinden. Die Idee eines Magento Moduls für die Verküpfung zwischen Magento und CloudSearch hatte ich auf der Heimfahrt vom Meet-Magento #6.12. Es galt die notwendigen Schritte zu definieren und ein Modul zu programmieren. Doch nach ein paar Stunden Arbeit war nach Durchsicht der Kostenstruktur die erste Freude verflogen.

Wie bei vielen Services von Amazon wird auch bei CloudSearch nach mehreren Kriterien verrechnet. Grundsätzlich gilt auch hier – es wird nur verrechnet, was auch verwendet wird. Die monatliche Nutzung wird mit folgenden Dimensionen errechnet:

  • Such-Instanzen (Small, Large, Extra Large) – verbrauchte Stunden
  • Uploads von Dokumentenstapeln – Anzahl der Uploads
  • Anfragen von IndexDocuments – GB einer Indexierungsanfrage
  • Datenübertragung – ausgehende Dateiübertragung

Die Ernüchterung lag bei der Such-Instanz selbst. Die kleinste Instanz kostet $0,115 pro Stunde  - das ist im Monat (mit z.B. 720 Stunden) doch satte $82,80 (~ 63,- €). Meine Idee einer vollständig verwalteten Suche mit Bezahlung nach Verbrauch hatte auf einmal eine sehr hohes Offset.

Außerdem ist die Verwaltung einer CloudSearch Instanz immer noch mit Arbeit verbunden und benötigt ein gewisses Maß an Verständnis für Textprocessing und Suchalgorithmen – auch nicht das Gelbe vom Ei für einen Shopbetreiber, der sich eher um den Verkauf seiner Produkte kümmern sollte.

Was ist Magefinder

Die Idee von Magefinder hatte ich dann vor ca. 4 Wochen. Das Ziel: eine umfassende Volltextsuche, die sich auch ein kleiner Magento Shop leisten kann und dessen Set-up in 30 Minuten möglich ist. Und ja, es ist möglich.

Das Konzept besteht aus einem sehr einfach gehaltenen Magento Modul, dass lediglich eine eigene CatalogSearch-Engine bereitstellt, um die Indexierungs- und  Suchanfragen zu Magefinder aufzubereiten und umzuleiten. Weiters wird zwischen dem Shop und CloudSearch ein API Layer gesetzt, der auf der einen Seite die Anfragen der verschiedene Shops verwaltet und auf der anderen Seite die Produktinformationen und Suchanfragen analysiert und für CloudSearch aufbereitet.

Wie Magefinder genau funktioniert, beschreibe ich im 2. Teil.

Die Kommentarfunktion ist geschlossen.