# đŸ§Ș Test de la Recherche Meilisearch ## ✅ Modifications AppliquĂ©es ### 1. Logs de DĂ©bogage AjoutĂ©s **Fichiers modifiĂ©s :** - `src/core/search/search-meilisearch.service.ts` - Logs requĂȘte HTTP - `src/core/search/search-orchestrator.service.ts` - Logs transformation - `src/components/search-panel/search-panel.component.ts` - Logs rĂ©sultats - `src/components/search-results/search-results.component.ts` - Support HTML highlight ### 2. Garantie d'Affichage des RĂ©sultats **ProblĂšme rĂ©solu :** Les hits Meilisearch sans `_formatted` ne crĂ©aient aucun match. **Solution :** Fallback automatique sur `excerpt` ou extrait de `content` pour toujours avoir au moins un match affichable. ### 3. Support du Highlighting Serveur **ProblĂšme rĂ©solu :** Les balises `` de Meilisearch Ă©taient Ă©chappĂ©es. **Solution :** DĂ©tection des balises HTML prĂ©-existantes et rendu sans Ă©chappement. ## 🚀 Comment Tester ### PrĂ©requis ```bash # 1. Meilisearch actif docker ps | grep meilisearch # ✅ Doit afficher : obsiviewer-meilisearch ... Up ... 7700->7700 # 2. Backend actif # Terminal 1 : node server/index.mjs # ✅ Doit afficher : ObsiViewer server running on http://0.0.0.0:4000 # 3. Frontend actif # Terminal 2 : npm run dev # ✅ Doit afficher : Local: http://localhost:3000 ``` ### Test 1 : Backend Direct ```bash curl "http://localhost:4000/api/search?q=test&limit=2" ``` **RĂ©sultat attendu :** ```json { "hits": [ { "id": "...", "title": "...", "excerpt": "...", "_formatted": { "title": "...test...", "content": "...test..." } } ], "estimatedTotalHits": 10, "processingTimeMs": 15, "query": "test" } ``` ### Test 2 : Interface Utilisateur 1. **Ouvrir** : http://localhost:3000 2. **Ouvrir DevTools** : F12 3. **Aller dans Console** 4. **Cliquer sur la barre de recherche** 5. **Taper** : `test` (ou tout autre mot) 6. **Attendre 300ms** (debounce) **Logs attendus dans Console :** ``` [SearchOrchestrator] Calling Meilisearch with query: test [SearchMeilisearchService] Sending request: /api/search?q=test&limit=20&highlight=true [SearchMeilisearchService] Request completed [SearchOrchestrator] Raw Meilisearch response: {hits: Array(X), ...} [SearchOrchestrator] Transformed hit: {id: "...", matchCount: 1, ...} [SearchPanel] Results received: Array(X) ``` **Interface attendue :** - ✅ Liste de rĂ©sultats apparaĂźt - ✅ Nombre de rĂ©sultats affichĂ© (ex: "5 results") - ✅ Groupes de fichiers visibles - ✅ Cliquer sur un groupe → matches s'affichent - ✅ Texte surlignĂ© en jaune (``) ### Test 3 : Network Tab 1. **DevTools** → **Network** 2. **Filtrer** : `search` 3. **Taper une recherche** **RequĂȘte attendue :** - **URL** : `/api/search?q=test&limit=20&highlight=true` - **Method** : GET - **Status** : 200 OK - **Response** : JSON avec `hits` ### Test 4 : Recherche Live 1. **Taper lentement** : `t` → `te` → `tes` → `test` 2. **Observer** : Recherche se dĂ©clenche aprĂšs 300ms de pause 3. **VĂ©rifier** : Pas de gel de l'interface ### Test 5 : OpĂ©rateurs Obsidian ``` # Recherche simple test # Par tag tag:projet # Par chemin path:docs/ # Par fichier file:readme # Combinaison tag:important path:2024/ ``` ## 🐛 Que Faire Si Ça Ne Marche Pas ### SymptĂŽme : Aucune requĂȘte HTTP **VĂ©rifier :** ```bash # 1. Backend tourne ? netstat -ano | findstr :4000 # 2. USE_MEILI activĂ© ? # Ouvrir : src/core/logging/environment.ts # VĂ©rifier : USE_MEILI: true ``` **Solution :** - RedĂ©marrer backend : `node server/index.mjs` - Hard refresh navigateur : Ctrl+Shift+R ### SymptĂŽme : RequĂȘte part mais erreur 404/500 **VĂ©rifier :** ```bash # Test direct backend curl "http://localhost:4000/api/search?q=test" # Si erreur : vĂ©rifier logs backend # Terminal oĂč node tourne ``` **Solution :** - VĂ©rifier que Meilisearch est actif - RĂ©indexer si nĂ©cessaire : `npm run meili:reindex` ### SymptĂŽme : RĂ©ponse OK mais rien ne s'affiche **VĂ©rifier dans Console :** ``` [SearchPanel] Results received: Array(0) # ← Si Array(0), aucun rĂ©sultat trouvĂ© ``` **Solution :** - Essayer un autre terme de recherche - VĂ©rifier que l'index contient des documents : ```bash curl "http://127.0.0.1:7700/indexes/notes_c_obsidian_doc_obsidian_it/stats" -H "Authorization: Bearer devMeiliKey123" ``` ### SymptĂŽme : RĂ©sultats affichĂ©s mais pas de highlighting **VĂ©rifier :** - Inspecter un match dans DevTools - Chercher les balises `` dans le HTML **Solution :** - VĂ©rifier que `highlight=true` dans la requĂȘte - VĂ©rifier que `_formatted` est prĂ©sent dans la rĂ©ponse ## 📊 RĂ©sultats Attendus ### Performance - **Temps de recherche** : 15-50ms (Meilisearch) - **Temps total** : < 100ms (avec rĂ©seau) - **Pas de gel UI** : ✅ Interface reste rĂ©active ### Affichage - **Nombre de rĂ©sultats** : AffichĂ© en haut - **Groupes par fichier** : ✅ Pliables/dĂ©pliables - **Matches** : ✅ Visibles avec contexte - **Highlighting** : ✅ Texte surlignĂ© en jaune ### FonctionnalitĂ©s - **Recherche live** : ✅ Pendant la saisie (debounce 300ms) - **OpĂ©rateurs** : ✅ `tag:`, `path:`, `file:` - **Tri** : ✅ Par pertinence, nom, date modifiĂ©e - **Navigation** : ✅ Clic sur rĂ©sultat ouvre la note ## ✅ Checklist de Validation - [ ] Backend dĂ©marrĂ© et accessible - [ ] Frontend dĂ©marrĂ© sur port 3000 - [ ] Meilisearch actif sur port 7700 - [ ] Hard refresh effectuĂ© (Ctrl+Shift+R) - [ ] DevTools Console ouverte - [ ] Recherche tapĂ©e (2+ caractĂšres) - [ ] Logs console prĂ©sents et corrects - [ ] RequĂȘte HTTP visible dans Network - [ ] RĂ©sultats affichĂ©s dans l'interface - [ ] Highlighting visible (texte surlignĂ©) - [ ] Pas de gel pendant la saisie - [ ] Clic sur rĂ©sultat fonctionne ## 🎯 Prochaines Étapes Une fois la recherche validĂ©e : 1. **Retirer les logs de dĂ©bogage** (ou les mettre en mode debug uniquement) 2. **Tester avec diffĂ©rentes requĂȘtes** (tags, paths, etc.) 3. **Valider la performance** avec un gros vault (1000+ notes) 4. **Documenter le comportement final** 5. **CrĂ©er des tests E2E** automatisĂ©s ## 📚 Documentation - **Guide complet** : `docs/SEARCH_OPTIMIZATION.md` - **Guide de dĂ©bogage** : `docs/SEARCH_DEBUG_GUIDE.md` - **Migration** : `docs/CHANGELOG/SEARCH_MEILISEARCH_MIGRATION.md` - **DĂ©marrage rapide** : `QUICK_START.md` ## 🆘 Support Si les tests Ă©chouent aprĂšs avoir suivi ce guide : 1. Copier les logs console complets 2. Copier la rĂ©ponse de `/api/search?q=test&limit=1` 3. VĂ©rifier les versions (Node, Angular, Meilisearch) 4. Consulter `docs/SEARCH_DEBUG_GUIDE.md` pour diagnostic approfondi