diff --git a/src/Http/Controllers/Api/AnnotationCandidateController.php b/src/Http/Controllers/Api/AnnotationCandidateController.php index 788865c..a7b8e2b 100644 --- a/src/Http/Controllers/Api/AnnotationCandidateController.php +++ b/src/Http/Controllers/Api/AnnotationCandidateController.php @@ -57,7 +57,7 @@ public function index($id) ->with('label'); $yieldItems = function () use ($query): \Generator { - foreach ($query->lazy() as $item) { + foreach ($query->lazy(10000) as $item) { $item->makeHidden('label_id'); yield $item; } @@ -114,6 +114,11 @@ public function indexSimilar($id, $id2) yield $item->id; } + // Return early to avoid running the very expensive query below. + if ($query->clone()->count() === $job->annotationCandidates()->count()) { + return; + } + // Add IDs of candidates without feature vectors at the end. $remainingIdsQuery = $job->annotationCandidates() ->whereNotIn('id', function ($query) use ($job) { diff --git a/src/Http/Controllers/Api/TrainingProposalController.php b/src/Http/Controllers/Api/TrainingProposalController.php index 8665013..4eadcb3 100644 --- a/src/Http/Controllers/Api/TrainingProposalController.php +++ b/src/Http/Controllers/Api/TrainingProposalController.php @@ -55,7 +55,7 @@ public function index($id) ->orderBy('id', 'desc'); $yieldItems = function () use ($query): \Generator { - foreach ($query->lazy() as $item) { + foreach ($query->lazy(10000) as $item) { yield $item; } }; @@ -111,6 +111,11 @@ public function indexSimilar($id, $id2) yield $item->id; } + // Return early to avoid running the very expensive query below. + if ($query->clone()->count() === $job->trainingProposals()->count()) { + return; + } + // Add IDs of candidates without feature vectors at the end. $remainingIdsQuery = $job->trainingProposals() ->whereNotIn('id', function ($query) use ($job) {