Recherche

Overview

Search V1 est une fonctionnalité centrale du CMS qui fournit une recherche publique adossée à la base de données sur le contenu des pages publiées.

  • La recherche n'indexe que les pages publiques publiées.
  • Les lignes de recherche sont délimitées par site et par langue (locale).
  • La recherche utilise une table dérivée public_search_index.
  • La recherche ne nécessite aucun service externe tel que Meilisearch, Algolia, Elasticsearch ou Scout.

Ce qui est indexé

  • le titre de la traduction de la page, le slug et les métadonnées du chemin public
  • les arbres de blocs publiés appartenant à la page dans les slots activés
  • le contenu Shared Slot compatible tel qu'il est consommé par la page publique

La recherche n'indexe pas :

  • les pages internes en brouillon, en révision, archivées ou masquées
  • les pages sources de Shared Slot en tant que résultats de recherche autonomes
  • les slots désactivés
  • le contenu Shared Slot inter-sites, inactif, incompatible avec le shell ou incompatible avec le slot
  • les libellés réservés à l'administration, les noms de types de blocs, les classes CSS ou les blobs de paramètres bruts en tant que contenu de recherche
  • les descriptions SEO de la page, les mots-clés et les métadonnées Open Graph en tant que contenu public du corps de la recherche

La recherche peut toujours utiliser le titre de la traduction de la page, car il fait partie de l'identité de la page publique, mais les surcharges SEO de la page sont par ailleurs traitées comme des métadonnées d'en-tête et non comme du contenu de corps interrogeable dans Search V1.

Routes publiques de recherche

  • langue par défaut : /search?q=term
  • langue non par défaut : /{locale}/search?q=term
  • endpoint JSON enrichi : /search.json?q=term
  • endpoint JSON enrichi localisé : /{locale}/search.json?q=term

L'hôte courant résout le site et le préfixe de route résout la langue (locale) en utilisant le même modèle de routage public que les pages.

Expérience utilisateur de la recherche publique

L'expérience publique principale est une fenêtre modale de recherche enrichie ouverte depuis le déclencheur de recherche de Header Actions lorsque JavaScript est disponible.

  • le déclencheur reste un lien normal vers la route /search de la langue courante, de sorte que les liens directs, l'usage sans JS et le repli d'accessibilité continuent de fonctionner
  • les résultats de la modale sont fournis par public_search_index
  • les résultats restent délimités au site et à la langue résolus actuellement
  • la description de la modale peut indiquer le libellé du site résolu afin que les utilisateurs voient sur quel site porte la recherche
  • la page de repli /search reste l'expérience canonique sans JS et pour les liens directs

La modale de recherche publique utilise uniquement Site Identity :

  • l'ordre de priorité du libellé du site est display_name, puis seo_title, puis name
  • Project Identity, dans System -> Settings, est réservé à l'administration et n'affecte ni les textes ni la portée de la recherche publique

L'endpoint JSON renvoie des données structurées et sûres pour la modale :

  • query normalisée
  • count
  • minimum_length
  • results avec title, url et excerpt
  • message no_results le cas échéant
  • message minimum_query_length le cas échéant

L'endpoint n'expose ni données d'administration, ni contenu en brouillon, ni HTML brut non sécurisé.

Bloc Search Form

Utilisez le bloc de première classe Search Form pour placer un formulaire de recherche dans n'importe quel slot public.

  • champs traduits : libellé accessible, texte indicatif, libellé du bouton
  • champs partagés : visibilité du bouton et variante du bouton
  • cible par défaut : la route de recherche résolue du site courant
  • la valeur actuelle de q est conservée lorsque le bloc est rendu sur la page de recherche
  • il continue de soumettre vers /search comme un formulaire GET normal et n'est pas forcé dans le flux de la modale

Écran d'administration

Les super administrateurs peuvent consulter l'état de la recherche dans Admin -> Maintenance -> Search Rebuild.

L'écran affiche :

  • nombre total de lignes indexées et horodatage de la dernière indexation
  • couverture par site
  • couverture par langue (locale)
  • action de reconstruction

Commande de reconstruction

Utilisez la commande de reconstruction non destructive lorsque vous devez recréer les lignes de recherche dérivées :

php artisan search:rebuild
php artisan search:rebuild --site=default
php artisan search:rebuild --locale=tr
php artisan search:rebuild --page=123

La commande reconstruit uniquement la portée de recherche demandée et ne modifie pas le contenu du CMS.

Si la table de recherche est absente de l'installation courante, exécutez d'abord php artisan migrate afin que l'index dérivé puisse être créé.

Limite de portabilité

public_search_index contient des données dérivées d'exécution.

  • elle peut figurer dans les sauvegardes et restaurations d'environnement, car celles-ci portent sur l'ensemble de la base de données
  • elle ne constitue pas du contenu de site requis pour la portabilité export/import
  • les flux d'export/import doivent reconstruire les lignes de recherche après le transfert de contenu lorsque c'est nécessaire

Sécurité

Search V1 ne nécessite aucune commande destructive de réinitialisation de la base de données.

  • les garde-fous contre les commandes destructives restent en place
  • les reconstructions effacent et recréent uniquement les lignes de recherche dérivées dans la portée demandée