Mise en place de la recherche sur ce site

Je viens d’ajouter la recherche sur ce site : elle est disponible depuis le lien /search. Enjoy 😉

J’ai eu quelques difficultĂ©s Ă  la mettre en place : la documentation sur hugo Ă  ce sujet est difficle Ă  comprendre et vraiment pas claire du tout ; poser des questions sur le forum amĂšne souvent Ă  des rĂ©ponse de la forme “lis la doc” qui n’aident pas du tout au regard de la complexitĂ© de celle-ci. Il existe un grand nombre d’articles sur le sujet, mais hugo a Ă©voluĂ© tellement que la plupart de ces articles proposent quelque chose qui ne fonctionne pas.

Je me suis fortement inspirĂ© de ce gist. Contraitement Ă  ce qu’on trouve en gĂ©nĂ©ral sur internet, cette implĂ©mentation s’appuie sur fuse.js et non sur lunr.js comme on trouve habituellement aujourd’hui. Je n’ai pas d’avis sur la question, mais en tout cas cela fonctionne pour moi, c’est la premiĂšre qualitĂ© du code !

Par contre je suis un peu “chagrin” car il a fallu que j’implĂ©mente Ă  nouveau un peu de templating du site pour les rĂ©ponses Ă  une recherche, mais en js/html plutot que en hugo : de la duplication pas facile Ă  faire sauter… J’ai Ă©galement fait le choix de ne pas servir les fichiers javascript supplĂ©mentaires (fuse, jquery) par mon site mais de passer par les CDN existants (contrairement Ă  ce que j’ai fait dans Un petit peu d’optimisation de ce site) car je me dis que la recherche sera trĂšs peu utilisĂ©e et qu’il n’est pas nĂ©cessaire d’en optimiser le chargement.

Mais alors, pourquoi l’avoir implĂ©mentĂ©e cette recherche ?

  1. c’est tout de mĂȘme fun Ă  faire
  2. je voulais progresser dans ma connaissance de hugo
  3. c’est une Ă©tape indispensable pour passer en IndieMark niveau 2 (en fait, je suis plutĂŽt dĂ©jĂ  niveau 3 sur cet aspect) qui impose d’avoir un champ de recherche sur son site web.

J’avance bien sur mon passage en niveau 2 qui est constituĂ© des Ă©lĂ©ments suivants :

  • ✅ avoir une h-card complĂšte et valide, avec icĂŽne de soi
  • ✅ avoir postĂ© plusieurs types de contenus diffĂ©rents (ici des articles de blog et des notes)
  • ❌ faire du POSSE vers les silos existants (par exemple, twitter) avec des boutons d’actions pour y rĂ©agir/reposter
  • ✅ avoir une navigation intĂ©grĂ©e au site (des liens suivant/prĂ©cĂ©dent entre les articles)
  • ✅ avoir une interface pour rechercher des contenus directement sur son site (pas nĂ©cessairement hĂ©bergĂ©e par le site en niveau 2, mais qui peut le plus peut le moins)

Il ne me reste plus qu’un point Ă  rĂ©soudre pour arriver au niveau 2, le niveau 3 implique de faire toutes ses interractions, y compris avec twitter et autres, depuis son propre site… exitant !