Skip to content

[Nom de la Configuration d'Indexation Pagefind]

Type de ressource : Configuration Indexation Pagefind (RÚgles / Exclusions / Métadonnées)
Fichier source : astro.config.mjs ou pagefind.yml
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0


[Description concise du rîle de cette configuration d’indexation dans l’architecture du site]

  • [Objectif principal : ex. indexer uniquement les pages publiĂ©es du blog et de la documentation]
  • [BĂ©nĂ©fice pour l’utilisateur final : ex. recherche rapide et pertinente]
Source de contenu Statut
Sanity (SSG) [✅/❌]
Starlight [✅/❌]
Les deux [✅/❌]
Type d’indexation Statut
Statique au build [✅/❌]
Dynamique [✅/❌]
Langues Statut
fr [✅/❌]
en [✅/❌]
multi-langue [✅/❌]
Couverture Statut
Vitrine [✅/❌]
Blog [✅/❌]
Portfolio [✅/❌]
Documentation [✅/❌]
Tout [✅/❌]

[Build Astro (SSG)]
│ ‱ GĂ©nĂ©ration HTML statique
│ ‱ Pages Sanity + Starlight
▌
[Pagefind CLI / astro-pagefind]
│ ‱ Lecture du dossier dist/
│ ‱ Application des rùgles d'exclusion
│ ‱ Extraction du contenu texte
│ ‱ GĂ©nĂ©ration de l'index chunkĂ©
▌
[Dossier _pagefind/]
│ ‱ Index fragmentĂ© (chunks)
│ ‱ MĂ©tadonnĂ©es et filtres
▌
[Site déployé]
│ ‱ Index chargĂ© Ă  la demande
│ ‱ Recherche cĂŽtĂ© client
▌
[Utilisateur final]
Composant RĂŽle Couche
Astro (SSG) Génération des pages HTML L2
Pagefind CLI Indexation statique Build time
astro-pagefind Intégration Astro L2
Starlight Documentation indexée L2
Index Pagefind Stockage de l’index Build artifact
UI de recherche Interface utilisateur L2

astro.config.mjs
import pagefind from 'astro-pagefind';
export default defineConfig({
integrations: [
pagefind({
ranking: {
pageLength: 0.1,
termFrequency: 0.5,
termSaturation: 0.5,
termSimilarity: 0.9,
},
excludeSelectors: [
'nav',
'footer',
'.no-index',
'.search-exclude',
'script',
'style',
],
}),
],
});
# pagefind.yml (Ă  la racine du projet)
site: dist
exclude_selectors:
- nav
- footer
- .no-index
- .search-exclude
- script
- style
---
// Dans les pages Astro
const pagefindMeta = {
type: 'blog', // ou 'page', 'portfolio', 'docs'
category: 'marketing',
date: '2026-09-04',
};
---
<html data-pagefind-meta={JSON.stringify(pagefindMeta)}>

ÉlĂ©ment Type Validation
dist/ Directory Existe et contient HTML
ÉlĂ©ment Type Description
_pagefind/ Directory Index chunké
pagefind.wasm File WebAssembly

Scénario Description Résultat attendu
Indexation Build complet Index généré
Exclusions SĂ©lecteurs appliquĂ©s ÉlĂ©ments exclus
Scénario Dépendances Description Résultat attendu
Recherche Index + UI Recherche d’un terme RĂ©sultats pertinents

Composant Type RĂŽle MĂ©thode d’intĂ©gration
Astro L2 Génération HTML astro-pagefind
Starlight L2 Documentation Indexation automatique
  • Les sĂ©lecteurs d’exclusion doivent ĂȘtre corrects
  • Les mĂ©tadonnĂ©es doivent ĂȘtre cohĂ©rentes
  • L’index doit ĂȘtre rĂ©gĂ©nĂ©rĂ© aprĂšs chaque build
  • L’index est gĂ©nĂ©rĂ© au build
  • Les exclusions sont appliquĂ©es
  • Les mĂ©tadonnĂ©es sont accessibles
  • La recherche fonctionne

  • ✅ Pas d’exposition de donnĂ©es sensibles
  • ✅ Index cĂŽtĂ© client uniquement
  • ✅ Exclure les zones sensibles
  • ✅ Ne pas indexer les pages privĂ©es

Limite Valeur
Taille de l’index ~10 MB par 10 000 pages
Temps d’indexation ~30s pour 10 000 pages
  • ✅ Index chunkĂ© (chargement progressif)
  • ✅ WebAssembly
  • ✅ Compression

SymptĂŽme Cause probable Solution
Index vide Build échoué Vérifier le build
Résultats manquants Exclusions trop larges Ajuster les sélecteurs
Terminal window
# Build avec Pagefind
npm run build
# Test local
npm run preview

  • ✅ Exclure les Ă©lĂ©ments non pertinents
  • ✅ Utiliser des mĂ©tadonnĂ©es cohĂ©rentes
  • ✅ Tester la recherche aprĂšs chaque build
  • ✅ Surveiller la taille de l’index
  • ✅ Ajuster les rĂšgles d’exclusion

  • [Évolution 1]
  • [Évolution 2]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]

  • Documentation Pagefind : Pagefind Docs
  • DAT L2 : §8 - Recherche UnifiĂ©e avec Pagefind

Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
Edit page

Last updated: