J'ai enfin pris quelques heures pour effectuer quelques améliorations sur le blog. Elles concernent principalement deux domaines : le moteur de recherche et l'interface graphique.
Pour rappel, ce blog est développé par moi-même, en PHP avec un framework perso construit au fil des années.
Moteur de recherche
Un des points faible de ce blog était le moteur de recherche. Il est vrai que je l'avais développé très rapidement, sans vraiment m'y attarder. J'utilisais alors la fonctionnalité FULLTEXT
de MySQL en interrogeant une table créée pour cet effet.
Cette table contenait simplement deux champs : l'identifiant de l'article et une chaîne de caractères représentant le contenu "recherchable" comme le titre, l'intro, les mots-clés, la catégorie.
La recherche FULLTEXT
permettait d'avoir un score de pertinence des résultats.
Lassé des performances médiocres que ce mode proposait pour mon blog, plusieurs solutions s'offraient :
- rester sur du
FULLTEXT
mais en améliorant les index et les requêtes de recherche - héberger un serveur de recherche style Elasticsearch ou en plus light l'excellent MeiliSearch
- utiliser un service externe
La première idée ne me convenait guère. Les résultats n'auraient pas été satisfaisants à mon sens.
Quant à monter un Elasticsearch, un SphinxSearch, Solr ou un que j'aime beaucoup MeiliSearch, bof bof. C'est trop pour les besoins du site.
Je me suis donc penché sur l'utilisation d'un service externe.
Il existe de multiples services permettant de créer des index et de les interroger via une API. Parmi les plus connus, on retrouve Algolia, Search.io, Coveo, Lucidworks, ...
Bien entendu, un de mes souhaits principal était que le service que j'utiliserai soit gratuit, dans la proportion du nombre de requêtes générées.
Je me suis d'abord renseigné sur l'offre gratuite d'Algolia. Elle permet d'avoir jusqu'à 10 000 enregistrements et l'utilisation de 10 000 recherches par mois.
Côté technique, l'API d'Algolia est très performante, tout y est présent pour mes simples besoins.
L'interface de gestion Algolia est complète. On y paramètre ses index, on peut ajuster les différents paramètres et consulter les logs de recherches et d'appels API. C'est vraiment simple d'accès et très complet.
J'ai donc testé Algolia en injectant mes enregistrements (= les articles du blog). J'utilise le client PHP fourni par Algolia qui fonctionne très bien. La mise en place a été très simple et les performances et surtout la pertinence des résultats obtenus sont très satisfaisants.
De le domaine professionnel, j'ai eu l'occasion de mettre en place des serveurs de recherche MeiliSearch. Concurrent français à Algolia, MeiliSearch est vraiment très performant, propose des fonctionnalités sympas et améliore constamment son produit. Il peut s'installer sur un serveur (self hosted) mais MeiliSearch propose depuis quelques mois une version Cloud et notamment une offre gratuite.
Cette dernière inclus jusqu'à 100 000 enregistrements et permet l'utilisation de 10 000 recherches par mois.
Au même titre qu'Algolia, MeiliSearch dispose d'une API très complète. Les fonctionnalités sont très proches entre les deux moteurs de recherche.
L'interface de gestion est cependant très simpliste. On ne peut créer que des index, obtenir les différentes clés API et consulter les enregistrements. Il n'est pas possible de modifier les paramètres de l'index ou de modifier directement les enregistrements comme sur Algolia. Tout se fait via l'API de MeiliSearch.
Néanmoins, l'offre Cloud étant assez récente chez MeiliSearch, ces fonctionnalités vont certainement arriver prochainement !
Après avoir chargé mes enregistrements dans Algolia et MeiliSearch, j'ai pu effectuer quelques comparatifs. Tout d'abord, au niveau de l'injection des documents, il y a une très nette différence en faveur pour Algolia. En effet, MeiliSearch est vraiment beaucoup plus lent lorsqu'il s'agit d'indexer les documents.
Côté recherche et paramétrage des règles, des attributs, etc, c'est très similaire et les performances sont semblables. La pertinence des résultats est aussi similaire.
Après plusieurs tests, j'ai décidé de baser le moteur de recherche du blog sur Algolia. Je continue bien sûr de surveiller attentivement MeiliSearch, que j'utilise depuis pas mal de temps maintenant côté professionnel.
Améliorations graphiques
Concernant l'interface graphique du blog (le thème), je l'avais revue en été 2017.
Cette fois-ci, il n'y a pas d'énormes changements mais j'ai simplifié et rendu un peu plus moderne certains éléments.
Avant :
Après :
Premièrement, la largeur de la partie centrale a été augmentée afin d'être plus pratique pour les écrans larges.
J'ai apporté un peu de rondeur dans les différents blocs et plus de clareté.
La barre latérale a également été allégée, notamment au niveau des différentes catégories qui sont maintenant affichées comme des tags.
Sur la page d'accueil (ou liste des articles), j'ai ajouté 4 articles avant la pagination afin de les faire découvrir à l'utilisateur.
La page d'un article a été aussi améliorée. Les mots-clés sont plus visibles :
Avant :
Après :
Le bloc situé sous l'article contenant des articles associés est plus sympa, de même que le bloc invitant l'utilisateur à s'inscrire à la newsletter :
Avant :
Après :
N'hésitez pas à me remonter en commentaire les problèmes que vous rencontrez avec le moteur de recherche ou l'interface du site. Tout suggestion est également bonne à prendre !