Moteur de recherche
Statut
Document de cadrage architecture — v1.0 — relu le 2026-05-10.
État actuel
Il n'existe pas de moteur de recherche dédié dans l'architecture DMV actuelle.
La recherche est implémentée par des requêtes SQL avec des opérateurs LIKE ou ilike (insensible à la casse) directement dans les services Laravel, sur PostgreSQL (Supabase).
Cette approche est fonctionnelle pour un volume de données modéré et une base de cas d'usage simples (recherche par nom, par commune, par tag).
Limites de l'approche LIKE
| Limitation | Impact |
|---|---|
| Performance dégradée sur grandes tables sans index | Requêtes lentes à l'échelle |
| Pas de recherche floue (fautes de frappe) | Expérience utilisateur limitée |
| Pas de classement par pertinence | Résultats non triés par score |
| Pas de recherche plein texte avancée | Synonymes, stemming absents |
| Pas de recherche multi-modèles unifiée | Silos par entité |
Vision cible
La cible est l'intégration d'un moteur de recherche adapté à l'échelle :
- PostgreSQL full-text search : option native sans infrastructure supplémentaire, adaptée si les volumes restent raisonnables.
- Meilisearch : moteur open-source performant, compatible avec Laravel Scout, offrant recherche floue et classement par pertinence.
- Typesense : alternative à Meilisearch, plus léger.
- Algolia : SaaS performant mais coûteux à l'échelle.
Laravel Scout facilite l'intégration de tous ces backends avec une API unifiée.
Entités concernées
Les recherches portent principalement sur :
- Acteurs (nom, description, commune, kind)
- Publications
- Communes
- Associations (AssoSuite)
- Services municipaux (Mairie)
État actuel vs cible
| Aspect | État actuel | Cible |
|---|---|---|
| Moteur | SQL LIKE / ilike | PostgreSQL FTS ou Meilisearch |
| Intégration Laravel | Requêtes manuelles | Laravel Scout |
| Recherche floue | Non | Oui |
| Indexation | Non | Index dédié mis à jour en temps réel |
| Multi-entités | Non | Recherche unifiée |
Points à clarifier
- Volume de données attendu (décision entre PostgreSQL FTS et Meilisearch).
- Fréquence de mise à jour des index.
- Champs à indexer par entité (données sensibles à exclure).
- Stratégie de déploiement et hébergement du moteur.