thomas@hammoudi:~/dev$

cat ~/projets/moudi-search/README.md

Une recherche instantanée, dans le navigateur

La recherche du Blog répond en temps réel à partir d'un index statique, entièrement dans le navigateur, sans service tiers ni requête au serveur à chaque frappe.

  • activité: Sites et applications
  • état: prod · utilisé
  • mode: comment ça marche
  • mis à jour:
Aperçu du projet Une recherche instantanée, dans le navigateur

Le problème

Pour un blog, la recherche est une porte d’entrée : on tape un mot, on espère retrouver l’article. Le service gratuit que j’utilisais plafonnait ses requêtes chaque mois et se coupait par moments. Je voulais une recherche instantanée, qui tolère les fautes de frappe et qui ne dépende de personne.

Ce que ça fait

Depuis le 09/08/2026, la loupe du Blog ouvre un panneau qui répond à chaque lettre tapée, avec une vignette, un extrait centré sur le mot cherché et le mot surligné. Il tolère les fautes : en tapant « floodzon », on retrouve l’article qui parle de Floodzone. Il gère les accents, les pluriels, les mots composés et le clavier (flèches, Entrée, Échap).

Comment ça marche

Un fichier d’index est fabriqué à l’avance sur le serveur, compressé, puis chargé une seule fois dans le navigateur, à la première frappe. Rien ne se charge avant. La recherche se fait ensuite entièrement chez le visiteur, avec une petite bibliothèque libre, MiniSearch (licence MIT). Aucune requête n’est envoyée au serveur à chaque lettre. Au 09/08/2026, l’index couvrait 460 contenus : 147 articles et 313 pages de vidéos.

L’index se reconstruit tout seul : à chaque publication, à chaque suppression, et par un passage de sécurité chaque nuit. Un avertissement apparaît dans l’administration s’il a plus de sept jours.

Le moteur est standard. Ce qui est à moi, ce sont les règles autour :

  • une requête fautive passe d’abord en mode strict, puis tolérant, puis très tolérant ;
  • un titre retapé de mémoire passe en tête, même quand tous ses mots sont courants ;
  • quand on tape le nom d’un photographe, ses contenus sortent en premier, jamais une page d’index qui n’amènerait personne.

Un test automatique pilote un vrai navigateur et rejoue onze recherches types, dont la faute de frappe, le titre retapé, le nom de photographe et le terme inexistant. Le 09/08/2026, les onze passaient. Si besoin, un interrupteur remet l’ancienne recherche, gardée en repli.

Qui fait quoi, en un schémamoudi-search/schema.svg
Une recherche instantanée, dans le navigateur : qui fait quoiLe serveur fabrique un index statique, le navigateur le charge à la première frappe, un moteur libre cherche chez le visiteur, avec mes règles de tri.$ moudi-search --schema5 briques┌─ LE BLOG ─┐Articles et vidéos, publiés oumodifiés.┌─ L'INDEX ─┐Un fichier unique, refait à chaquepublication.┌─ LE NAVIGATEUR ─┐Charge l'index une fois, à lapremière frappe.┌─ LE MOTEUR ─┐MiniSearch cherche chez le visiteur.┌─ MES RÈGLES ─┐Fautes, titres retapés, photographesen tête.publiese chargeinterrogetrié parVersion simplifiée : les grandes briques et ce qu'elles font.
Une recherche instantanée, dans le navigateur : qui fait quoiLe serveur fabrique un index statique, le navigateur le charge à la première frappe, un moteur libre cherche chez le visiteur, avec mes règles de tri. Version en colonne.$ moudi-search --schema5 briques┌─ LE BLOG ─┐Articles et vidéos, publiés ou modifiés.publie┌─ L'INDEX ─┐Un fichier unique, refait à chaquepublication.se charge┌─ LE NAVIGATEUR ─┐Charge l'index une fois, à la premièrefrappe.interroge┌─ LE MOTEUR ─┐MiniSearch cherche chez le visiteur.trié par┌─ MES RÈGLES ─┐Fautes, titres retapés, photographes entête.Version simplifiée : les grandes briques.

Qui fait quoi

  • Le serveur : il fabrique l’index et le met à jour à chaque publication.
  • Le navigateur : il charge l’index une fois et fait toute la recherche.
  • MiniSearch : la bibliothèque libre qui cherche, créditée à son auteur.
  • Mes règles : tolérance aux fautes, titres retapés, routage vers les photographes.
  • Le test : un navigateur réel qui rejoue les cas types.

Ce que vous pouvez récupérer

Rien à télécharger : le plugin reste privé, car il est calé sur mon design et sur mes contenus. Le principe se reproduit tel quel : un index statique, une bibliothèque libre comme MiniSearch, et vos propres règles de tri. Vous pouvez essayer le résultat sur le Blog : cliquez sur la loupe et tapez « floodzon ».

Ce que j'en retiens

Un index statique rend la recherche gratuite et instantanée, au prix d’un fichier à télécharger : je l’ai donc fait charger au dernier moment et compresser d’avance. Un test dans un vrai navigateur m’a évité de confondre « ça marche chez moi » et « ça marche ». Et pour un blog de dix ans, un seul moteur pour les articles et les vidéos était plus utile que deux listes séparées.

tous les projets