Skip to content

Commit f1ce3a6

Browse files
authored
PHPLIB-1763 Add $rerank stage (#1892)
1 parent 4ae7e29 commit f1ce3a6

8 files changed

Lines changed: 255 additions & 53 deletions

File tree

src/Builder/Stage/FactoryTrait.php

Lines changed: 24 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Builder/Stage/FluentFactoryTrait.php

Lines changed: 26 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Builder/Stage/RankFusionStage.php

Lines changed: 4 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Builder/Stage/RerankStage.php

Lines changed: 77 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Builder/Stage/ScoreFusionStage.php

Lines changed: 4 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/Builder/Stage/Pipelines.php

Lines changed: 70 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Stage;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Query;
10+
use MongoDB\Builder\Stage;
11+
use MongoDB\Tests\Builder\PipelineTestCase;
12+
13+
use function MongoDB\object;
14+
15+
/**
16+
* Test $rerank stage
17+
*/
18+
class RerankStageTest extends PipelineTestCase
19+
{
20+
public function testExample(): void
21+
{
22+
$pipeline = new Pipeline(
23+
Stage::match(
24+
Query::query(
25+
plot: [Query::exists(true), Query::type('string')],
26+
),
27+
),
28+
Stage::sort(released: -1),
29+
Stage::rerank(
30+
model: 'rerank-2.5',
31+
query: object(text: 'a group of heroes band together to stop a powerful enemy and save the world'),
32+
path: ['title', 'plot'],
33+
numDocsToRerank: 100,
34+
),
35+
Stage::addFields(
36+
rerankScore: Expression::meta('score'),
37+
),
38+
Stage::limit(10),
39+
Stage::project(
40+
_id: 0,
41+
title: 1,
42+
plot: 1,
43+
rerankScore: 1,
44+
),
45+
);
46+
47+
$this->assertSamePipeline(Pipelines::RerankExample, $pipeline);
48+
}
49+
}

0 commit comments

Comments
 (0)