visuddhinanda 2 giorni fa
parent
commit
0b726f0f8f
1 ha cambiato i file con 63 aggiunte e 0 eliminazioni
  1. 63 0
      api-v13/app/Console/Commands/PaliQueryHealthCheck.php

+ 63 - 0
api-v13/app/Console/Commands/PaliQueryHealthCheck.php

@@ -0,0 +1,63 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Services\OpenSearchService;
+use Exception;
+use Illuminate\Console\Attributes\Description;
+use Illuminate\Console\Attributes\Signature;
+use Illuminate\Console\Command;
+
+/**
+ * Check whether the pali_synonyms dictionary is applied for a given word
+ *
+ * Usage:
+ *   php artisan app:pali-query-health-check          # defaults to "dhamma"
+ *   php artisan app:pali-query-health-check dhamma    # custom word
+ */
+#[Signature('app:pali-query-health-check {word? : Pali word to check, defaults to dhamma}')]
+#[Description('Check whether the pali_synonyms dictionary is applied for a given word via the OpenSearch _analyze API')]
+class PaliQueryHealthCheck extends Command
+{
+    /**
+     * Execute the console command.
+     *
+     * @param  OpenSearchService  $service
+     * @return int Command::SUCCESS | Command::FAILURE
+     */
+    public function handle(OpenSearchService $service): int
+    {
+        $word = $this->argument('word') ?? 'dhamma';
+
+        $this->info("Checking synonym expansion for [{$word}]...");
+
+        try {
+            $tokens = $service->pali_query_health_check($word);
+        } catch (Exception $e) {
+            $this->error('Check failed: '.$e->getMessage());
+
+            return self::FAILURE;
+        }
+
+        if (empty($tokens)) {
+            $this->warn('No tokens returned. Please check that the index exists and the analyzer is configured correctly.');
+
+            return self::FAILURE;
+        }
+
+        $this->table(
+            ['#', 'Token'],
+            collect($tokens)->values()->map(fn ($token, $i) => [$i + 1, $token])->toArray()
+        );
+
+        $expanded = count($tokens) > 1;
+
+        if ($expanded) {
+            $this->info("✅ Synonym dictionary is active — [{$word}] expanded into ".count($tokens).' token(s).');
+        } else {
+            $this->warn("⚠️  [{$word}] did not expand into any synonyms. Check that the entry exists in pali_synonyms.txt, or that the index has reloaded the file.");
+        }
+
+        return self::SUCCESS;
+    }
+}