Blog
Magento und ElasticSearch
Über die Magento-eigene Suchfunktion muss man gar nicht viel Worte verlieren. Eigentlich nur drei. Nicht so gut.
Darüber, dass ein Shop eine gute Suche haben sollte, muss man noch weniger Worte verlieren. Da kann man auch einfach nur nicken.
Also verliere ich jetzt viele Worte aus meiner Tagesdosis an Worten und erzähle was zu ElasticSearch und Magento.
ElasticSearch wird mit einer OpenSource-Lizenz angeboten. Es baut (wie auch Solr) auf Apache Lucene auf. Damit ist es keine Engine ausschließlich für Magento, sondern kann auch für CRM- und Content-Management-Systeme eingesetzt werden.
Da ElasticSearch auf Lucene aufbaut, wird die Java-Laufzeitumgebung (Java Runtime) vorausgesetzt. Ob man die hat oder nicht, weiß man, indem man
java -version
in seine Konsole tippt. Im besten Fall erscheint dann dort (derzeit):
java version "1.7.0_51"
Wenn nicht, kann hier die passende Version fürs Betriebssystem heruntergeladen werden:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Damit sind dann erstmal alle erforderlichen Grundvoraussetzungen geschaffen.
Als nächstes folgt ElasticSearch selbst. Dies kann auf der Webseite von ElasticSearch downgeloaded werden:
http://www.elasticsearch.org/download/
Ich habe es in mein htdocs-Verzeichnis in den Ordner „elasticsearch“ geladen und dort entzippt. Hier gibt’s bestimmt nettere Orte. Aber ich teste ja noch…
Weiter geht’s im Terminal. Im Verzeichnis „elasticsearch“ bis zum „bin“ Verzeichnis wandern (in meinem Fall: /Applications/MAMP/htdocs/elasticsearch/elasticsearch-1.0.1/bin)
und dort:
./elasticsearch
eingeben. Damit wird ElasticSearch gestartet. Es müsste also jetzt was passieren im Fenster…
Ob alles geklappt hat, weiß man, wenn man
http://localhost:9200/
in den Browser eingibt und dort etwas Json-Response-anmutendes zu sehen ist.
Man kann jetzt noch konfigurieren – aber das will ich jetzt gar nicht erklären. Zum Ziel kommt man auch so auf die Schnelle…
Das war’s dann erstmal schon auf Serverseite.
ElasticSearch braucht jetzt eine PHP-Library, die dann mit der API von ElasticSearch kommunizieren kann. Für PHP gibt es da zum Glück schon fertige Libraries. Um die muss man sich aber auch nicht kümmern, wenn diese mit dem Modul für ElasticSearch in Magento mitgeliefert wird.
Ich habe das Modul von Johann Reinke / BubbleCode ausprobiert. http://www.bubbleshop.net/magento-elasticsearch.html
Dieses wird mit der Library „Elastica“ (https://github.com/ruflin/Elastica) ausgeliefert.
Nachdem man das Modul installiert hat, muss man nicht mehr viel machen, damit ElasticSearch den Shop indiziert.
Unter System->Konfiguration->Katalog->Katalog->Katalogsuche wird das Modul konfiguriert.
Erstmal von MySql auf ElasticSearch umschalten und dann die restlichen Einstellungen vornehmen, z.B. ob eine AND oder OR-Suche verwendet werden soll.
Zusätzlich dazu, kann man den Attributen eine Gewichtung geben. Wenn also Farbe wichtiger ist, als die Beschreibung, kann man in den Frontend-Attributeigeschaften den Wert „Search Weight“ verändern.
Dann noch die Indexe erneuern.
Und das war’s…
Dann bekommt man im Frontend jetzt bei Vertippern die richtigen Vorschläge und die Ergebnisse sind auch viel viel besser. Suche ich nach „Badewae“ statt nach „Badewanne“ werde ich nett gefragt, ob ich mich vertan habe und bekomme Badewannen angezeigt.
Mein Badewannenbeispiel liefert mit ElasticSearch Badewannen als Treffer… und das seitenlang. (Das „Badewannen“ bei der Suche nach „Badewannen“ gefunden werden als etwas Freudiges hervorzuheben, bewegt sich irgendwo zwischen witzig und zynisch). In der Magento-Suche kommt als erster Treffer ein Rohr. Ich hoffe für das Rohr, dass es irgendwas mit Badewannen zu tun hat…
Die Magento-Suche liefert 88 Ergebnisse zum Suchbegriff „Badewanne“. Die erste Badewanne taucht irgendwo auf Seite 2 auf (bei 30 Ergebnissen pro Seite). ElasticSearch liefert 359 Treffer. Die Schärfe kann man noch trimmen.
Das Rohr gibt’s bei ElasticSearch übrigens auf Seite 3 (bei 30 Treffern pro Seite). Also hat es wahrscheinlich was mit Badewannen zu tun…
Kommentare
Hinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Great tutorial. It is also possible to use Wyomind (Bubbleshop) Elasticsearch module for installing and configuring elasticsearch on Magento (http://magenticians.com/install-configure-elasticsearch-magento/ ). I found this module better for this purpose. Which module would you recommend?