diff --git a/config/scout.php b/config/scout.php index e8a3bdda..a5cd77f1 100644 --- a/config/scout.php +++ b/config/scout.php @@ -204,6 +204,11 @@ // ], // ], ], + 'remote-embedding-settings' => [ + 'remote_embedding_batch_size' => env('TYPESENSE_REMOTE_EMBEDDING_BATCH_SIZE', 200), + 'remote_embedding_timeout_ms' => env('TYPESENSE_REMOTE_EMBEDDING_TIMEOUT_MS', 60000), + 'remote_embedding_num_tries' => env('TYPESENSE_REMOTE_EMBEDDING_NUM_TRIES', 2), + ], ], ]; diff --git a/src/Engines/TypesenseEngine.php b/src/Engines/TypesenseEngine.php index e77cb9df..01ad2145 100644 --- a/src/Engines/TypesenseEngine.php +++ b/src/Engines/TypesenseEngine.php @@ -113,7 +113,8 @@ public function update($models) */ protected function importDocuments(TypesenseCollection $collectionIndex, array $documents, string $action = 'upsert'): Collection { - $importedDocuments = $collectionIndex->getDocuments()->import($documents, ['action' => $action]); + $remoteEmbeddingIndex = $this->getRemoteEmbeddingSettings(); + $importedDocuments = $collectionIndex->getDocuments()->import($documents, ['action' => $action, ...$remoteEmbeddingIndex]); $results = []; @@ -689,4 +690,18 @@ public function __call($method, $parameters) { return $this->typesense->$method(...$parameters); } + + /** + * Get the remote embedding settings from the configuration. + * + * @return array + */ + protected function getRemoteEmbeddingSettings(): array + { + return config('scout.typesense.remote-embedding-settings', [ + 'remote_embedding_batch_size' => env('TYPESENSE_REMOTE_EMBEDDING_BATCH_SIZE', 200), + 'remote_embedding_timeout_ms' => env('TYPESENSE_REMOTE_EMBEDDING_TIMEOUT_MS', 60000), + 'remote_embedding_num_tries' => env('TYPESENSE_REMOTE_EMBEDDING_NUM_TRIES', 2), + ]); + } } diff --git a/tests/Unit/TypesenseEngineTest.php b/tests/Unit/TypesenseEngineTest.php index 8808ffca..2de091e0 100644 --- a/tests/Unit/TypesenseEngineTest.php +++ b/tests/Unit/TypesenseEngineTest.php @@ -28,7 +28,7 @@ protected function setUp(): void $typesenseClient = $this->createMock(TypesenseClient::class); $this->engine = $this->getMockBuilder(TypesenseEngine::class) ->setConstructorArgs([$typesenseClient, 1000]) - ->onlyMethods(['getOrCreateCollectionFromModel', 'buildSearchParameters']) + ->onlyMethods(['getOrCreateCollectionFromModel', 'buildSearchParameters', 'getRemoteEmbeddingSettings']) ->getMock(); } @@ -143,6 +143,11 @@ public function test_update_method(): void ->method('getOrCreateCollectionFromModel') ->willReturn($collection); + // Mock the getRemoteEmbeddingSettings method + $this->engine->expects($this->once()) + ->method('getRemoteEmbeddingSettings') + ->willReturn([]); + // Call the update method $this->engine->update(collect($models)); }