← Exercices BD02

⚡ Mini-projet BD02

Moteur de recherche d'articles avec analytics

🎯 Objectif

Construire un système de blog avec recherche full-text PostgreSQL, analytics par fenêtre temporelle (window functions), et vues matérialisées pour le dashboard.

Durée estimée : 3–4 heures

📋 Fonctionnalités

🗺️ Étapes

1. Créer tables articles, authors, tags, views_log
2. Ajouter colonne search_vector + trigger
3. Créer index GIN + JSONB (metadata)
4. Implémenter les requêtes full-text avec ts_headline
5. Créer vue matérialisée dashboard
6. Écrire les window functions d'analyse

💡 Requête clé à implémenter

-- Recherche full-text avec ranking et snippet
SELECT
  a.title,
  ts_rank(a.search_vector, query) AS rank,
  ts_headline('french', a.body, query,
    'MaxWords=30, MinWords=15, ShortWord=3, HighlightAll=FALSE') AS snippet,
  au.name AS author
FROM articles a
JOIN authors au ON au.id = a.author_id,
     to_tsquery('french', 'postgresql & performance') query
WHERE a.search_vector @@ query
ORDER BY rank DESC LIMIT 10;

✅ Critères de validation