Skip to content

Commit 747532b

Browse files
feat: add support for Meilisearch embedder settings (#928)
* feat: add support for Meilisearch engine index settings with embedders * add the missing comma picked by style ci * fix: avoid sending embedder settings to the index settings API
1 parent 11adefe commit 747532b

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

src/Engines/MeilisearchEngine.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Laravel\Scout\Engines;
44

5+
use Illuminate\Support\Arr;
56
use Illuminate\Support\LazyCollection;
67
use Laravel\Scout\Builder;
78
use Laravel\Scout\Contracts\UpdatesIndexSettings;
@@ -395,7 +396,13 @@ public function createIndex($name, array $options = [])
395396
*/
396397
public function updateIndexSettings($name, array $settings = [])
397398
{
398-
$this->meilisearch->index($name)->updateSettings($settings);
399+
$index = $this->meilisearch->index($name);
400+
401+
$index->updateSettings(Arr::except($settings, 'embedders'));
402+
403+
if (! empty($settings['embedders'])) {
404+
$index->updateEmbedders($settings['embedders']);
405+
}
399406
}
400407

401408
/**

tests/Unit/MeilisearchEngineTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Laravel\Scout\Engines\MeilisearchEngine;
1111
use Laravel\Scout\Tests\Fixtures\SearchableModel;
1212
use Meilisearch\Client;
13+
use Meilisearch\Endpoints\Indexes;
1314
use Mockery as m;
1415
use PHPUnit\Framework\TestCase;
1516
use stdClass;
@@ -242,6 +243,33 @@ public function test_engine_returns_hits_entry_from_search_response()
242243
'totalHits' => 3,
243244
]) === 3);
244245
}
246+
247+
public function test_update_index_settings_with_embedders()
248+
{
249+
$client = m::mock(Client::class);
250+
$index = m::mock(Indexes::class);
251+
252+
$client->shouldReceive('index')
253+
->with('test_index')
254+
->once()
255+
->andReturn($index);
256+
257+
$index->shouldReceive('updateSettings')
258+
->with(['searchableAttributes' => ['title']])
259+
->once();
260+
261+
$index->shouldReceive('updateEmbedders')
262+
->with(['default' => ['source' => 'openAi']])
263+
->once();
264+
265+
$engine = new MeilisearchEngine($client);
266+
$engine->updateIndexSettings('test_index', [
267+
'searchableAttributes' => ['title'],
268+
'embedders' => ['default' => ['source' => 'openAi']],
269+
]);
270+
271+
$this->assertTrue(true);
272+
}
245273
}
246274

247275
class MeilisearchCustomKeySearchableModel extends SearchableModel

0 commit comments

Comments
 (0)