Algolia, un moteur de recherche très efficace pour WordPress

Vous ne le savez peut-être pas, mais la recherche de base est très mauvaise sur WordPress. Le moteur de recherche intégré se contente de piocher dans les titres et le corps des articles, il ignore totalement les métadonnées (catégories, tags, taxonomies personnalisées, etc.). Pire, les résultats de recherche sont affichés par ordre de publication et non par pertinence. Les articles les plus récents sont ainsi systématiquement mis en avant, ce qui n’a aucun sens sur mon blog personnel, composé essentiellement de critiques de films et séries et d’avis sur des restaurants.

De ce fait, cela fait des années que j’utilise une extension qui améliore le moteur de recherche par défaut. J’ai longtemps utilisé Relevanssi, qui a surtout l’avantage d’être gratuit et qui est très complet, mais aussi très lent. Depuis plus de trois ans, j’utilisais SearchWP, un concurrent payant, tout aussi complet et beaucoup plus rapide. J’ai eu l’occasion d’en parler ici-même lorsque je l’ai déployé et je n’ai que des bonnes choses à dire à son sujet.

searchwp

Malheureusement, ce blog ne rapporte pas d’argent et la recherche n’est pas assez utilisée pour justifier la dépense. La recherche instantanée que j’ai mise en place début 2014 suffit certainement à la majorité des lecteurs… elle me suffit d’ailleurs le plus souvent. Ajoutons que le tarif d’une licence pour SearchWP a nettement augmenté au fil des années et il faut désormais compter 79 $ par an. C’est totalement inimaginable pour moi et je me suis mis en tête de chercher une solution gratuite.

Puisque j’héberge désormais mon blog sur un VPS géré par mes soins (mon guide pour transférer un blog WordPress est toujours disponible à cette adresse), je pouvais essayer la solution ElasticSearch. Ce moteur de recherche est très utilisée, c’est même celui qu’exploite WordPress.com, le réseau de sites hébergés d’Automatic qui est utilisé pour ce blog technique. L’installation était simple, la configuration beaucoup moins et je n’ai jamais réussi à obtenir de bons résultats.

C’est alors que j’ai testé Algolia et j’ai été bluffé par la qualité des résultats sans aucun réglage de ma part.

algolia-logo-light.png

Algolia, une recherche hébergée qui peut être gratuite

Cela fait quelques années que je suis avec attention cette petite entreprise française. Algolia a été créée en 2012 seulement, mais ce n’est plus une petite start-up : elle compte désormais une centaine d’employés et de gros clients à son actif. C’est un service hébergé qui dispose de serveurs dans pas moins de 47 data-centers pour couvrir le monde entier. Bref, ce n’est pas simplement un module à installer sur le serveur de son blog WordPress, c’est un service professionnel et payant.

C’est la raison pour laquelle j’ai attendu si longtemps avant de me lancer. Algolia est payant et très cher à mon échelle d’amateur : les tarifs commencent à 49 $ par mois en condition de payer pour un an.  Je ne peux évidemment pas me le permettre, mais le service propose un niveau gratuit qui devrait me suffire largement.

prix-algolia
Les tarifs actuels d’Algolia, ici sans engagement.

Sans payer, le service est fortement limité : 10 000 enregistrements dans leur base de données et 100 000 opérations par mois. Sur un blog très fréquenté, ces chiffres seraient vite atteints, mais la recherche étant assez peu utilisée sur le mien, je suis tranquille côté opérations. Pour le nombre d’enregistrements en revanche,  je le dépasse largement si j’active toutes les fonctions de base de l’extension officielle pour WordPress.

Il faut dire que le module en fait beaucoup et ajoute notamment une recherche instantanée au champ de recherche du blog. Mais pour y parvenir, il indexe deux fois tout le contenu, une fois pour la recherche complète et une autre pour la recherche instantanée. Avec quasiment 1400 articles et un grand nombre de taxonomies pour les réalisateurs et acteurs, je dépassais alors allégrement la limite des 10 000 enregistrements dans la base de données.

Pour commencer, j’ai donc désactivé totalement la fonction de recherche instantanée (onglet « Autocomplete » de l’extension) et j’ai supprimé dans l’interface d’administration d’Algolia tous les index qui ne correspondent pas à la base de données dédiée à la recherche complète. Par défaut, cet index est nommé wp_searchable_posts et il contient, sur mon blog, un petit peu plus de 5 000 enregistrements. J’ai encore de la marge pour remplir cet index, il me faudra plusieurs années au rythme de publication actuel.

index-algolia.png
Voici à quoi ressemble l’index de recherche pour mon blog.

Une extension adaptée aux bricoleurs

Algolia propose un service clé en main qui peut être utilisé sans absolument aucune connaissance technique. En quelques minutes, vous aurez des résultats de recherche d’excellente qualité, pertinents et le tout en un temps record. La version gratuite ne permet d’utiliser qu’un seul serveur, mais depuis la France, c’est bien suffisant pour avoir des résultats quasiment instantanés, même sur un hébergeur un petit peu lent.

Cette simplicité de mise en œuvre ne veut pas dire que vous ne pouvez pas, si vous en avez besoin, mettre les mains dans le cambouis. C’est même tout le contraire, Algolia propose une documentation riche pour utiliser sa recherche dans tous les contextes, qu’il s’agisse d’un site web ou d’une app. C’est encore plus facile pour WordPress, l’extension devrait suffire à la majorité des cas, mais j’ai quand même modifié quelques éléments.

Tout se fait via des fonctions ajoutées au fichier functions.php. Vous trouverez mes modifications dans leur contexte sur GitHub comme toujours. J’ai modifié trois éléments :

  • Je n’indexe pas les pages, uniquement les articles ;
  • Je n’indexe pas le nom d’auteur, puisque je suis le seul à écrire sur le blog ;
  • J’indexe par contre le custom field qui me sert à indiquer le titre original des films, c’est une information utile pour certaines recherches.

Ne pas indexer le nom de l’auteur m’a permis d’économiser quelques centaines d’enregistrements dans la base de données et ainsi d’agrandir légèrement ma marge de manœuvre avant de devoir payer.

Si vous comptez sur la formule gratuite, n’oubliez pas aussi de glisser le logo d’Algolia, c’est une exigence pour éviter de payer.

algolia-logo.jpg

 

Je vais voir si la solution Algolia est viable sur le long terme, mais ce premier essai est très encourageant. La mise en place est très simple, la configuration avancée l’est tout autant et les résultats sont vraiment excellents. Je suis très surpris par certains résultats lors de mes essais avec des fautes de frappes (la recherche « prates caribes » affiche les bons films, par exemple) ou certains articles associés grâce à des synonymes.

En théorie, trouver un article parmi une base de données est la chose la plus simple au monde. En pratique, trouver la bonne configuration est sans aucun doute l’une des tâches les plus difficiles, ne serait-ce que parce qu’il y a des dizaines et des dizaines de paramètres à prendre en compte. Il faut gérer le titre différemment du contenu, chaque metadonnée doit être prise en compte dans la balance, mais cela ne suffit pas. Il faut aussi différencier les termes proches ou lointain dans un article, connaître les synonymes pour afficher le résultat attendu même si le terme exact n’est pas utilisé.

Bref, c’est extrêmement complexe et Algolia sait le faire. Vous obtiendrez les mêmes résultats avec ElasticSearch si vous savez ce que vous faites. Sinon, c’est une bonne alternative et je suis prêt à exploiter un service tiers et prendre le risque d’être bloqué un jour, soit parce qu’il fermera ses portes, soit parce que la formule gratuite disparaîtra.

Si c’est le cas, je trouverai bien une autre solution le moment venu. En attendant, la recherche sur mon blog est désormais alimentée par Algolia et j’en suis ravi.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s