2
0

UpdatePaliSynonymsController.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\OpenSearchService;
  4. use Exception;
  5. use Illuminate\Http\JsonResponse;
  6. use Illuminate\Support\Facades\Log;
  7. /**
  8. * 更新 pali 同义词文件版本(运维接口)
  9. *
  10. * 鉴权:请求头 Authorization: Bearer <APP_OPS_TOKEN>,由 ops.token 中间件校验,
  11. * 不匹配返回 403。
  12. *
  13. * 请求:
  14. * PUT /api/ops/update-pali-synonyms/20260731
  15. *
  16. * 返回:
  17. * {
  18. * "ok": true,
  19. * "data": {
  20. * "index": "wikipali_20260516",
  21. * "version": "20260731",
  22. * "synonyms_path": "analysis/pali-synonyms-20260731.txt"
  23. * },
  24. * "message": ""
  25. * }
  26. */
  27. class UpdatePaliSynonymsController extends Controller
  28. {
  29. public function __construct(protected OpenSearchService $searchService) {}
  30. /**
  31. * 更新索引使用的 pali 同义词文件版本
  32. *
  33. * 将 pali_synonyms filter 的 synonyms_path 指向
  34. * analysis/pali-synonyms-{$version}.txt,该文件须已上传到
  35. * OpenSearch 各节点的 config 目录。
  36. *
  37. * @param string $version 同义词文件版本号,例如 20260731
  38. */
  39. public function update(string $version): JsonResponse
  40. {
  41. try {
  42. $result = $this->searchService->updatePaliSynonymsPath($version);
  43. return $this->ok([
  44. 'index' => config('mint.opensearch.index'),
  45. 'version' => $version,
  46. 'synonyms_path' => $result['path'],
  47. ]);
  48. } catch (Exception $e) {
  49. Log::error('UpdatePaliSynonymsController::update', [
  50. 'version' => $version,
  51. 'message' => $e->getMessage(),
  52. ]);
  53. return $this->error('更新同义词文件失败:'.$e->getMessage(), null, 500);
  54. }
  55. }
  56. }