api/test-meilisearch-filters.php

94 lines
3.1 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
* Script de test Meilisearch - Vérification du filtre de difficulté
*
* Usage: php test-meilisearch-filters.php
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
use App\Models\Hunts;
use Illuminate\Support\Facades\Log;
echo "🔍 Test des filtres Meilisearch\n\n";
// Test 1: Vérifier que les hunts existent en DB
echo "1⃣ Vérification des hunts dans la base de données:\n";
$allHunts = Hunts::all();
echo " Total hunts en DB: " . $allHunts->count() . "\n";
$huntsByDifficulty = $allHunts->groupBy('difficulty');
foreach (['easy', 'medium', 'hard'] as $diff) {
$count = isset($huntsByDifficulty[$diff]) ? $huntsByDifficulty[$diff]->count() : 0;
echo " - $diff: $count hunts\n";
}
echo "\n";
// Test 2: Vérifier ce qui est indexé dans Meilisearch
echo "2⃣ Vérification de l'indexation Meilisearch:\n";
try {
$search = Hunts::search('')->raw();
echo " Total hunts indexés: " . $search['estimatedTotalHits'] . "\n";
if (isset($search['hits'][0])) {
echo " Premier hunt indexé:\n";
$firstHunt = $search['hits'][0];
echo " - ID: " . ($firstHunt['id'] ?? 'N/A') . "\n";
echo " - Title: " . ($firstHunt['title'] ?? 'N/A') . "\n";
echo " - Difficulty: " . ($firstHunt['difficulty'] ?? 'N/A') . "\n";
echo " - City: " . ($firstHunt['city'] ?? 'N/A') . "\n";
}
} catch (Exception $e) {
echo " ❌ Erreur: " . $e->getMessage() . "\n";
}
echo "\n";
// Test 3: Test du filtre de difficulté
echo "3⃣ Test du filtre difficulty=medium:\n";
try {
$mediumHunts = Hunts::search('')
->options([
'filter' => 'difficulty = "medium"'
])
->raw();
echo " Hunts avec difficulty=medium: " . $mediumHunts['estimatedTotalHits'] . "\n";
if ($mediumHunts['estimatedTotalHits'] > 0 && isset($mediumHunts['hits'][0])) {
echo " Premier résultat:\n";
echo " - " . $mediumHunts['hits'][0]['title'] . " (difficulty: " . $mediumHunts['hits'][0]['difficulty'] . ")\n";
} else {
echo " ⚠️ Aucun hunt trouvé avec difficulty=medium\n";
echo " Vérifiez que les hunts ont bien été réindexés avec:\n";
echo " php artisan scout:import \"App\\Models\\Hunts\"\n";
}
} catch (Exception $e) {
echo " ❌ Erreur: " . $e->getMessage() . "\n";
}
echo "\n";
// Test 4: Vérifier les attributs filtrables
echo "4⃣ Vérification des settings Meilisearch:\n";
try {
$client = app(\Laravel\Scout\EngineManager::class)->engine();
$meilisearchClient = $client->engine;
$index = $meilisearchClient->index('hunts');
$settings = $index->getSettings();
echo " Attributs filtrables: " . implode(', ', $settings['filterableAttributes'] ?? []) . "\n";
echo " Attributs triables: " . implode(', ', $settings['sortableAttributes'] ?? []) . "\n";
} catch (Exception $e) {
echo " ❌ Erreur: " . $e->getMessage() . "\n";
}
echo "\n✅ Tests terminés!\n";