Recherche

Le plugin flexweg-search ajoute une recherche full-text côté client à votre site public. Pas de serveur, pas de service tiers — un index JSON est généré au moment de la publication et un petit

Le plugin flexweg-search ajoute une recherche full-text côté client à votre site public. Pas de serveur, pas de service tiers — un index JSON est généré au moment de la publication et un petit runtime ouvre une modale de recherche partout où votre thème expose un trigger.

Cette page couvre ce que les visiteurs expérimentent. Pour la configuration, voir la référence du plugin flexweg-search.

Ce que les visiteurs voient

Une modale de recherche qui s'ouvre au clic sur un trigger de recherche ou via un raccourci clavier (par défaut Cmd+K / Ctrl+K).

Visuel :

┌────────────────────────────────────┐
│ 🔍 Rechercher des posts...        │
├────────────────────────────────────┤
│ ▸ Mon premier post                │
│   2026-05-01 · Recettes            │
│                                    │
│ ▸ Autre post intéressant          │
│   2026-04-12 · Vie quotidienne     │
│                                    │
│ ▸ ...                              │
└────────────────────────────────────┘

Liste de résultats en temps réel (filtre à chaque keystroke). Click sur un résultat ouvre la page correspondante.

Comment ouvrir la modale

Trois moyens :

  1. Cmd/Ctrl + K sur le clavier (raccourci globalement actif)
  2. Click sur un trigger [data-cms-search] exposé par votre thème (typiquement un bouton 🔍 dans le header)
  3. URL avec ?search=... (déclenche l'ouverture automatique de la modale avec la query pré-remplie)

Les thèmes intégrés (default, magazine, corporate, marketplace-core) exposent un trigger dans leur header.

Navigation au clavier dans la modale

  • Flèches ↑↓ — navigue dans les résultats
  • Enter — ouvre le résultat sélectionné
  • Escape — ferme la modale
  • Tab — pose le focus sur l'input

Performance

search-index.json est fetché au premier ouverture de la modale. Pour un site moyen (~200 posts) :

  • Index ~50 Ko gzippé
  • Fetch en ~200 ms sur connection rapide
  • Filtre en temps réel < 50 ms par keystroke

Pour un site avec 5000 posts : ~600 Ko gzippé, fetch ~1-2 s sur 4G. Acceptable.

Pour des sites encore plus gros, considérez Algolia ou similaire via du custom code.

Ce qui est trouvé

Selon la config, l'index inclut :

  • Titre du post (toujours)
  • Slug (toujours)
  • Extrait (par défaut)
  • Catégorie principale (par défaut)
  • Tags (par défaut)
  • Date (par défaut)
  • Corps markdown (optionnel — coûteux mais plus complet)

La recherche fait du substring matching multi-tokens insensible à la casse. Taper « pasta carbo » trouve les posts qui contiennent pasta ET carbo quelque part (titre, extrait, etc.).

Pas de pertinence avancée

Aucun scoring de pertinence — les résultats sont retournés dans l'ordre où ils apparaissent dans l'index (typiquement par date desc). Le matching est strict (pas de tolerance aux fautes de frappe).

Pour de la recherche avec ranking + tolerance + faceting, vous voulez Algolia / MeiliSearch / Typesense — voir Custom Code pour intégrer leur runtime à la place.

Multilang

flexweg-search n'a pas (encore) d'intégration native avec flexweg-multilang. L'index inclut les posts toutes langues confondues. Donc une recherche peut retourner des résultats dans une langue que l'utilisateur ne comprend pas.

Pour un support multilang propre, c'est une amélioration future.

Désactivation

Si la recherche n'est pas activée mais que votre thème expose le trigger, le bouton reste visible mais ne fait rien (le runtime n'est pas chargé). Pour le retirer, customisez le thème ou le retirez du BaseLayout.