C'EST QUOI ?
Pagefind est une bibliothèque de recherche full-text entièrement statique, écrite en Rust. Elle s'exécute après le build de n'importe quel générateur de site statique, indexe le HTML produit et dépose un bundle de recherche directement dans les fichiers du site. Résultat : une recherche instantanée dans le navigateur, sans serveur, sans base de données et sans le moindre service externe à héberger ou à payer.
POURQUOI C'EST INTÉRESSANT ?
- Zéro infrastructure : l'index n'est qu'un ensemble de fichiers statiques servis avec le reste du site. Pas de backend, pas de SaaS, pas de clé API à gérer.
- Bande passante minimale : l'index est découpé en fragments chargés à la demande via WebAssembly. Une recherche sur un site de 10 000 pages consomme moins de 300 Ko au total, bibliothèque comprise. Pour la plupart des sites, on tourne plutôt autour de 100 Ko.
- Compatible avec tout : Pagefind travaille sur le HTML final, pas sur les sources. Zola, Hugo, Eleventy, Astro, Next.js en export statique... si le build produit du HTML, ça fonctionne.
- Multilingue sans configuration : les sites multilingues sont détectés automatiquement, chaque langue reçoit son propre index avec le stemming adapté.
- Filtres, tri et métadonnées : un vrai moteur de filtres pour la recherche à facettes, un tri par pertinence ou par métadonnées personnalisées, et un système de pondération fine du contenu.
- UI clé en main : depuis la version 1.5, des web components prêts à l'emploi (modal de recherche comprise) s'ajoutent en quelques lignes. Une API JavaScript bas niveau reste disponible pour construire une interface sur mesure.
CAS D'USAGE
- Ajouter une recherche full-text à un blog ou une documentation générés avec Zola, Hugo, Astro ou Eleventy
- Mettre en place une recherche à facettes sur une base de connaissances ou un catalogue statique
- Remplacer un service de recherche hébergé (Algolia, Meilisearch) quand un index statique suffit
- Indexer des contenus non-HTML (PDF, JSON) via les bibliothèques d'indexation NodeJS et Python
- Proposer une recherche fédérée couvrant plusieurs domaines statiques
