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…

Hinterlasse einen Kommentar

Kontakt
E-Mail: office@neoshops.de
Tel.: +49 [0]151 7000 7107
Carmen Bremen
Magento Certified Developer
Magento Certified Solution Specialist
Magento Certified Frontend Developer
Magento Freelancer


Magento Certified Developer Magento Certified Solution Specialist Magento Certified Frontend Developer



Magento Stammtisch Köln
Magento Stammtisch KölnDer nächste Kölner Magento Stammtisch findet statt am 12. Januar 2017. (Xing eintragen, ich sende eine Rund-E-Mail mit Details kurz vor dem Event!

Kontakt

Carmen Bremen.

In: Xing
In: Skype
In: Twitter
In: Google+
Per: Formular
Innermail: Office (t) neoshops.de
In Köln: In der Lößbörde 1, 50859 Köln
Per Handy: +49 [0]151- 7000 7107

Letzte Beiträge