Magento – Recherche et catégories/shopBy optimisés avec Apache SolR

Sommaire

L'utilisation du module SolR pour Magento décrit ci-dessous est réservé à la version Enterprise de Magento (test effectué sur la version 1.11.0.0). Une alternative pour la version Community existe sur MagentoConnect : http://www.magentocommerce.com/magento-connect/solr-bridge-search.html Ou encore une version simplifiée gratuite toujours pour la version communautaire de Magento : http://code.google.com/p/magento-community-edition-solr/  

SolR ; qu'est-ce que c'est ? à quoi ça sert ?

Apache SOLR est un serveur basé sur Apache Lucene, une librairie de recherche "full-text" libre, sous licence Apache. Le gros avantage de Lucène est qu'elle est très robuste, très stable et très performante. Appliqué à Magento Enterprise Edition Apache SolR permet d'effectuer une recherche à facette beaucoup plus pertinente et performante que la recherche native de Magento :
  • Recherche plus performance et réactive n'utilisant pas le SGBD classique donc moins de charge sur ce dernier (mysql, pgsql...)
  • Recherche de mot clé proposant des résultats alternatifs si aucun résultat n'est trouvé du type "Ne cherchez-vous pas plutôt 'rechercheA' (X résultats), 'rechercheB' (Y résultats) ?"
  • Listings produits (catégories produits) et filtrages (ShopBy) utilisant le moteur SolR : moins de requêtes sur le SGDB classique donc encore une fois moins de charge.

Installer Apache SolR

Installer JAVA sous DEBIAN

aptitude update aptitude install sun-java6-jre java – version Résultat attendu :

Installer Apache SolR

wget http://apache.dattatec.com//lucene/solr/3.4.0/apache-solr-3.4.0.tgz tar xf apache-solr-3.4.0.tgz cd apache-solr-3.4.0/example/ java -jar start.jar Résultat attendu : On constate à la fin des logs que SolR tourne sur le port 8983 donc il faut l’ouvrir sur votre firewall si vous voulez accéder à son interface web depuis l’extérieur. Ensuite ouvrez avec votre navigateur : http://[IP_SERVEUR]:8983/solr/admin/ Vous devriez voir cet écran d'accueil SolR :

Configurer SolR

Faire un backup du répertoire de configuration SolR puis copier la configuration Magento dans SolR en confirmant l'écrasement des fichiers : cd [solr-instance]/example/solr/ cp -r conf conf_backup cd [magento-instance]/lib/Apache/solr/conf cp * [solr-instance]/example/solr/conf/. Redémarrez ensuite SolR ; le redémarrage de SolR devra vous afficher ces logs confirmant la prise en charge des différents handlers Magento par SolR pour chaque langue (cliquez sur la capture pour l'agrandir) :

Configurer Magento pour utiliser SolR

Depuis le backoffice de Magento se rendre dans « System > Configuration > Catalog > Catalog search » puis configurez les champs comme dans la capture d’écran ci-dessous (cliquez sur la capture pour l'agrandir) : Cliquez ensuite sur le bouton « Test Connection » afin de vérifier que tout fonctionne bien ; vous devriez voir : Lancez ensuite une réindexation totale de Magento : cd [magento-instance]/shell/ php indexer.php reindexall Pendant l’indexation vous devriez voir les logs SolR défiler indiquant que l’index SolR est alimenté par Magento (transfert des données depuis le SGBD classique vers SolR - cliquez sur la capture pour l'agrandir) :

Résultats : recherche plus pertinente et ShopBy plus performant

Moteur de recherche Magento :

  • La recherche Magento est beaucoup plus rapide et pertinente par rapport à la recherche de base
  • Le temps d’indexation du “catalogsearch_fulltext” est plus rapide
  • Lorsqu’il n'y a aucun résultat, affichage de suggestions de mots clés amenant à des résultats comme sur Google « Voulez-vous plutôt recherchez xxx (3 résultats) ou yyy (1 résultat) ? »
Voyez par vous-même le résultat après avoir lancé une recherche :

Navigation à travers les catégories et filtrage (shopBy) :

  • Navigation plus rapide (6ms pour retourner les résultats de la requête SolR) en utilisant le moteur SolR pour lister les produits à la façon « recherche SolR » après l’avoir activé en backoffice (Enable SolR engine for catalog navigation = Yes)
  • 90% de requêtes en moins (requêtes catégories) sur MySQL lors de l’affichage d’un listing produit
  • SolR n'a néanmoins pas d’impact lors de l’affichage d’une fiche produit
Dans cet exemple on voit passer la requète à SolR pour l'affichage d'une catégorie (categories :22) – le nombre de résultats (hits=4) et le temps d’exécution de la requête en millisecondes (QTime=22) - cliquez sur la capture pour l'agrandir :
Cache, E-Commerce, Magento, Optimisation

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *