Skip to content

Commit 6e038a3

Browse files
committed
Make embedder field mandatory in SimilarDocumentsQuery
1 parent f1bc0cb commit 6e038a3

File tree

4 files changed

+37
-53
lines changed

4 files changed

+37
-53
lines changed

.code-samples.meilisearch.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ distinct_attribute_guide_distinct_parameter_1: |-
742742
search_parameter_guide_matching_strategy_3: |-
743743
$client->index('movies')->search('white shirt', ['matchingStrategy' => 'frequency']);
744744
get_similar_post_1: |-
745-
$similarQuery = new SimilarDocumentsQuery('TARGET_DOCUMENT_ID');
745+
$similarQuery = new SimilarDocumentsQuery('TARGET_DOCUMENT_ID', 'default');
746746
$client->index('INDEX_NAME')->searchSimilarDocuments($similarQuery);
747747
multi_search_federated_1: |-
748748
$client->multiSearch([

src/Contracts/SimilarDocumentsQuery.php

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ class SimilarDocumentsQuery
1111
*/
1212
private $id;
1313

14+
/**
15+
* @var non-empty-string
16+
*/
17+
private string $embedder;
18+
1419
/**
1520
* @var non-negative-int|null
1621
*/
@@ -21,11 +26,6 @@ class SimilarDocumentsQuery
2126
*/
2227
private ?int $limit = null;
2328

24-
/**
25-
* @var non-empty-string|null
26-
*/
27-
private ?string $embedder = null;
28-
2929
/**
3030
* @var list<non-empty-string>|null
3131
*/
@@ -48,11 +48,13 @@ class SimilarDocumentsQuery
4848
private $rankingScoreThreshold;
4949

5050
/**
51-
* @param int|string $id
51+
* @param int|string $id
52+
* @param non-empty-string $embedder
5253
*/
53-
public function __construct($id)
54+
public function __construct($id, string $embedder)
5455
{
5556
$this->id = $id;
57+
$this->embedder = $embedder;
5658
}
5759

5860
/**
@@ -91,18 +93,6 @@ public function setFilter(array $filter): self
9193
return $this;
9294
}
9395

94-
/**
95-
* @param non-empty-string $embedder
96-
*
97-
* @return $this
98-
*/
99-
public function setEmbedder(string $embedder): self
100-
{
101-
$this->embedder = $embedder;
102-
103-
return $this;
104-
}
105-
10696
/**
10797
* @param list<non-empty-string> $attributesToRetrieve an array of attribute names to retrieve
10898
*
@@ -166,10 +156,10 @@ public function setRankingScoreThreshold($rankingScoreThreshold): self
166156
/**
167157
* @return array{
168158
* id: int|string,
159+
* embedder: non-empty-string,
169160
* offset?: non-negative-int,
170161
* limit?: positive-int,
171162
* filter?: array<int, array<int, string>|string>,
172-
* embedder?: non-empty-string,
173163
* attributesToRetrieve?: list<non-empty-string>,
174164
* showRankingScore?: bool,
175165
* showRankingScoreDetails?: bool,
@@ -181,10 +171,10 @@ public function toArray(): array
181171
{
182172
return array_filter([
183173
'id' => $this->id,
174+
'embedder' => $this->embedder,
184175
'offset' => $this->offset,
185176
'limit' => $this->limit,
186177
'filter' => $this->filter,
187-
'embedder' => $this->embedder,
188178
'attributesToRetrieve' => $this->attributesToRetrieve,
189179
'showRankingScore' => $this->showRankingScore,
190180
'showRankingScoreDetails' => $this->showRankingScoreDetails,

tests/Contracts/SimilarDocumentsQueryTest.php

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,54 +10,48 @@
1010
final class SimilarDocumentsQueryTest extends TestCase
1111
{
1212
/**
13-
* @param int|string $id
13+
* @param int|string $id
14+
* @param non-empty-string $embedder
1415
*
15-
* @testWith [123]
16-
* ["test"]
16+
* @testWith [123, "default"]
17+
* ["test", "manual"]
1718
*/
18-
public function testConstruct($id): void
19+
public function testConstruct($id, string $embedder): void
1920
{
20-
$data = new SimilarDocumentsQuery($id);
21+
$data = new SimilarDocumentsQuery($id, $embedder);
2122

22-
self::assertSame(['id' => $id], $data->toArray());
23+
self::assertSame(['id' => $id, 'embedder' => $embedder], $data->toArray());
2324
}
2425

2526
public function testSetOffset(): void
2627
{
27-
$data = (new SimilarDocumentsQuery('test'))->setOffset(66);
28+
$data = (new SimilarDocumentsQuery('test', 'default'))->setOffset(66);
2829

29-
self::assertSame(['id' => 'test', 'offset' => 66], $data->toArray());
30+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'offset' => 66], $data->toArray());
3031
}
3132

3233
public function testSetLimit(): void
3334
{
34-
$data = (new SimilarDocumentsQuery('test'))->setLimit(50);
35+
$data = (new SimilarDocumentsQuery('test', 'default'))->setLimit(50);
3536

36-
self::assertSame(['id' => 'test', 'limit' => 50], $data->toArray());
37+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'limit' => 50], $data->toArray());
3738
}
3839

3940
public function testSetFilter(): void
4041
{
41-
$data = (new SimilarDocumentsQuery('test'))->setFilter([
42+
$data = (new SimilarDocumentsQuery('test', 'default'))->setFilter([
4243
['genres = horror', 'genres = mystery'],
4344
"director = 'Jordan Peele'",
4445
]);
4546

46-
self::assertSame(['id' => 'test', 'filter' => [['genres = horror', 'genres = mystery'], "director = 'Jordan Peele'"]], $data->toArray());
47-
}
48-
49-
public function testSetEmbedder(): void
50-
{
51-
$data = (new SimilarDocumentsQuery('test'))->setEmbedder('default');
52-
53-
self::assertSame(['id' => 'test', 'embedder' => 'default'], $data->toArray());
47+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'filter' => [['genres = horror', 'genres = mystery'], "director = 'Jordan Peele'"]], $data->toArray());
5448
}
5549

5650
public function testSetAttributesToRetrieve(): void
5751
{
58-
$data = (new SimilarDocumentsQuery('test'))->setAttributesToRetrieve(['name', 'price']);
52+
$data = (new SimilarDocumentsQuery('test', 'default'))->setAttributesToRetrieve(['name', 'price']);
5953

60-
self::assertSame(['id' => 'test', 'attributesToRetrieve' => ['name', 'price']], $data->toArray());
54+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'attributesToRetrieve' => ['name', 'price']], $data->toArray());
6155
}
6256

6357
/**
@@ -66,9 +60,9 @@ public function testSetAttributesToRetrieve(): void
6660
*/
6761
public function testSetShowRankingScore(bool $showRankingScore): void
6862
{
69-
$data = (new SimilarDocumentsQuery('test'))->setShowRankingScore($showRankingScore);
63+
$data = (new SimilarDocumentsQuery('test', 'default'))->setShowRankingScore($showRankingScore);
7064

71-
self::assertSame(['id' => 'test', 'showRankingScore' => $showRankingScore], $data->toArray());
65+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'showRankingScore' => $showRankingScore], $data->toArray());
7266
}
7367

7468
/**
@@ -77,9 +71,9 @@ public function testSetShowRankingScore(bool $showRankingScore): void
7771
*/
7872
public function testSetShowRankingScoreDetails(bool $showRankingScoreDetails): void
7973
{
80-
$data = (new SimilarDocumentsQuery('test'))->setShowRankingScoreDetails($showRankingScoreDetails);
74+
$data = (new SimilarDocumentsQuery('test', 'default'))->setShowRankingScoreDetails($showRankingScoreDetails);
8175

82-
self::assertSame(['id' => 'test', 'showRankingScoreDetails' => $showRankingScoreDetails], $data->toArray());
76+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'showRankingScoreDetails' => $showRankingScoreDetails], $data->toArray());
8377
}
8478

8579
/**
@@ -88,9 +82,9 @@ public function testSetShowRankingScoreDetails(bool $showRankingScoreDetails): v
8882
*/
8983
public function testSetRetrieveVectors(bool $retrieveVectors): void
9084
{
91-
$data = (new SimilarDocumentsQuery('test'))->setRetrieveVectors($retrieveVectors);
85+
$data = (new SimilarDocumentsQuery('test', 'default'))->setRetrieveVectors($retrieveVectors);
9286

93-
self::assertSame(['id' => 'test', 'retrieveVectors' => $retrieveVectors], $data->toArray());
87+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'retrieveVectors' => $retrieveVectors], $data->toArray());
9488
}
9589

9690
/**
@@ -101,8 +95,8 @@ public function testSetRetrieveVectors(bool $retrieveVectors): void
10195
*/
10296
public function testSetRankingScoreThreshold($rankingScoreThreshold): void
10397
{
104-
$data = (new SimilarDocumentsQuery('test'))->setRankingScoreThreshold($rankingScoreThreshold);
98+
$data = (new SimilarDocumentsQuery('test', 'default'))->setRankingScoreThreshold($rankingScoreThreshold);
10599

106-
self::assertSame(['id' => 'test', 'rankingScoreThreshold' => $rankingScoreThreshold], $data->toArray());
100+
self::assertSame(['id' => 'test', 'embedder' => 'default', 'rankingScoreThreshold' => $rankingScoreThreshold], $data->toArray());
107101
}
108102
}

tests/Endpoints/SimilarDocumentsTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ public function testBasicSearchWithSimilarDocuments(): void
3030
self::assertSame(1, $response->getHitsCount());
3131

3232
$documentId = $response->getHit(0)['id'];
33-
$response = $this->index->searchSimilarDocuments(new SimilarDocumentsQuery($documentId));
33+
$response = $this->index->searchSimilarDocuments(new SimilarDocumentsQuery($documentId, 'manual'));
3434

3535
self::assertGreaterThanOrEqual(4, $response->getHitsCount());
3636
self::assertArrayNotHasKey('_vectors', $response->getHit(0));
3737
self::assertArrayHasKey('id', $response->getHit(0));
3838
self::assertSame($documentId, $response->getId());
3939

40-
$similarQuery = new SimilarDocumentsQuery($documentId);
40+
$similarQuery = new SimilarDocumentsQuery($documentId, 'manual');
4141
$response = $this->index->searchSimilarDocuments($similarQuery->setRetrieveVectors(true));
4242
self::assertGreaterThanOrEqual(4, $response->getHitsCount());
4343
self::assertArrayHasKey('_vectors', $response->getHit(0));

0 commit comments

Comments
 (0)