Recherche
Les sites construits incluent une page de recherche fonctionnelle à /search/, générée par langue au moment du build, adossée à un index JSON statique, et interrogée entièrement dans le navigateur du visiteur. Cette page couvre son fonctionnement et la façon dont elle reste à jour.
Comment ça fonctionne
- Le builder écrit un search index (
<language>/search-index.json) contenant chaque page et post publiés dans cette langue : le type d'entrée, le titre, l'URL absolue et un extrait (l'extrait de l'auteur s'il est fourni ; sinon un résumé de 160 caractères généré depuis le corps). - La page de recherche (rendue depuis
search.tt, avec l'en-tête et le pied de page de votre thème) charge cet index côté client et fait correspondre localement la requêteq=du visiteur, aucun aller-retour serveur, aucun backend de recherche, rien à configurer.
Ce qui est interrogeable
- Les pages et posts publiés, par langue. Chaque entrée d'index porte le titre, l'URL du résultat et l'extrait, donc ce qui correspond est exactement ce que le visiteur lit dans le listing.
- Les index sont délimités par langue : une recherche sous le
/search/d'une langue ne fait jamais remonter de résultats dans une autre langue (cohérent avec le modèle de sortie par langue). - Les extraits proviennent du champ d'extrait de l'auteur lorsqu'il est défini, sinon du résumé généré automatiquement, le même texte utilisé dans les listings et les flux, de sorte que les aperçus de recherche correspondent à ce qu'affiche un clic.
Toujours à jour
L'index est régénéré à chaque build, y compris les builds incrémentaux, de sorte que les résultats de recherche reflètent exactement le contenu qui a été promu en dernier. Publiez, reconstruisez, et la recherche le voit.
Détails de la page utilitaire
- Les pages
/search/sont marquées noindex par le builder, de sorte qu'elles n'apparaissent jamais dans les sitemaps ni dans les listings des crawlers. - Le service worker (PWA) pré-cache aussi la page de recherche par langue, de sorte que la recherche se rende depuis le cache hors ligne, en faisant correspondre les requêtes à l'index embarqué.
- Le formulaire de recherche de l'en-tête cible la même URL
/search/avec un paramètreq=, dans chaque vhost de langue.
Recherches côté CMS (un système lié mais distinct)
La zone admin a ses propres surfaces de recherche (la recherche de blocs de la Library, la recherche du listing de documents, et l'endpoint /api/search de l'API pour les scripts) mais celles-ci interrogent la base de données et sont administrées. La page de recherche publique est celle construite décrite ici.