logo hsb.horse

Architecture Decision Record

Politique d’adoption de la recherche du site avec Pagefind

Adopter Pagefind pour la recherche plein texte statique et standardiser les routes de recherche localisées avec l’intégration au build.

Accepté #search #pagefind #architecture #i18n

Politique d’adoption de la recherche du site avec Pagefind

Décision

  • Adopter Pagefind comme moteur de recherche global du site.
  • Exposer les routes /search et /{lang}/search, avec des index linguistiques sélectionnés via html[lang].
  • Rendre l’indexation Pagefind obligatoire après astro build dans la pipeline de build.
  • Faire pointer la navigation de recherche dans le header vers la page de recherche de la locale active.

Contexte

Le site est entièrement statique et doit proposer une recherche plein texte sans ajouter d’infrastructure de recherche côté serveur. Le site publie déjà des URLs multilingues (ja/en/ko/fr/de/pt) ; le comportement de recherche doit donc rester borné par langue.

Options

  • Option A : utiliser un service de recherche hébergé externe
  • Option B : développer et maintenir une API de recherche personnalisée
  • Option C : introduire Pagefind avec index statique (retenue)

Justification

  • Pagefind s’exécute après la génération HTML statique et s’intègre bien au flux Astro.
  • La sélection d’index par langue via html[lang] est disponible nativement.
  • La recherche côté client limite les coûts d’exploitation et évite des dépendances d’infrastructure supplémentaires.

Conséquences

  • Les builds de production doivent générer dist/pagefind/.
  • L’implémentation UI initiale utilise @pagefind/default-ui, avec possibilité d’évoluer vers une UI personnalisée.
  • Les optimisations de pertinence (sélecteurs d’exclusion, pondération, enrichissement des métadonnées) seront ajoutées après observation des usages réels.