solrmagento

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 *