Skip to content

Commit

Permalink
IDBPR-2554 Добавлена возможность передачи query для function_score
Browse files Browse the repository at this point in the history
  • Loading branch information
egmanoylin committed Feb 11, 2025
1 parent 9bfe58f commit 9ed6647
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 7 deletions.
4 changes: 3 additions & 1 deletion src/Concerns/DecoratesBoolQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Ensi\LaravelElasticQuery\Concerns;

use Closure;
use Ensi\LaravelElasticQuery\Contracts\DSLAware;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreItem;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreOptions;
use Ensi\LaravelElasticQuery\Contracts\MatchOptions;
Expand Down Expand Up @@ -155,9 +156,10 @@ public function whereMoreLikeThis(array $fields, MoreLikeThis $likeThis, ?MoreLi

/**
* @param array<FunctionScoreItem> $functions
* @param ?DSLAware $query
* @param ?FunctionScoreOptions $options
*/
public function addFunctionScore(array $functions, ?FunctionScoreOptions $options = null): static
public function addFunctionScore(array $functions, ?DSLAware $query = null, ?FunctionScoreOptions $options = null): static
{
$this->forwardCallTo($this->boolQuery(), __FUNCTION__, func_get_args());

Expand Down
3 changes: 2 additions & 1 deletion src/Contracts/BoolQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ public function whereMoreLikeThis(array $fields, MoreLikeThis $likeThis, ?MoreLi

/**
* @param array<FunctionScoreItem> $functions
* @param ?DSLAware $query
* @param ?FunctionScoreOptions $options
*/
public function addFunctionScore(array $functions, ?FunctionScoreOptions $options = null): static;
public function addFunctionScore(array $functions, ?DSLAware $query = null, ?FunctionScoreOptions $options = null): static;
}
6 changes: 4 additions & 2 deletions src/Filtering/BoolQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Ensi\LaravelElasticQuery\Concerns\SupportsPath;
use Ensi\LaravelElasticQuery\Contracts\BoolQuery;
use Ensi\LaravelElasticQuery\Contracts\Criteria;
use Ensi\LaravelElasticQuery\Contracts\DSLAware;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreItem;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreOptions;
use Ensi\LaravelElasticQuery\Contracts\MatchOptions;
Expand Down Expand Up @@ -260,11 +261,12 @@ public function whereMoreLikeThis(array $fields, MoreLikeThis $likeThis, ?MoreLi

/**
* @param array<FunctionScoreItem> $functions
* @param ?DSLAware $query
* @param ?FunctionScoreOptions $options
*/
public function addFunctionScore(array $functions, ?FunctionScoreOptions $options = null): static
public function addFunctionScore(array $functions, ?DSLAware $query = null, ?FunctionScoreOptions $options = null): static
{
$this->should->add(new FunctionScore($functions, $options));
$this->should->add(new FunctionScore($functions, $query, $options));

return $this;
}
Expand Down
4 changes: 3 additions & 1 deletion src/Filtering/Criterias/FunctionScore.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Ensi\LaravelElasticQuery\Filtering\Criterias;

use Ensi\LaravelElasticQuery\Contracts\Criteria;
use Ensi\LaravelElasticQuery\Contracts\DSLAware;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreItem;
use Ensi\LaravelElasticQuery\Contracts\FunctionScoreOptions;
use stdClass;
Expand All @@ -16,6 +17,7 @@ class FunctionScore implements Criteria
*/
public function __construct(
private array $functions,
private ?DSLAware $query = null,
private ?FunctionScoreOptions $options = null,
) {
array_map(fn ($function) => Assert::isInstanceOfAny($function, [FunctionScoreItem::class]), $functions);
Expand All @@ -24,7 +26,7 @@ public function __construct(
public function toDSL(): array
{
$body = [
'query' => ['match_all' => new stdClass()],
'query' => $this->query?->toDSL() ?? ['match_all' => new stdClass()],
'functions' => array_map(fn (FunctionScoreItem $function) => $function->toArray(), $this->functions),
];

Expand Down
4 changes: 2 additions & 2 deletions tests/IntegrationTests/Search/SearchQueryIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
->whereMoreLikeThis(
$fields,
$likeThis,
MoreLikeOptions::make(
options: MoreLikeOptions::make(
minTermFreq: 1,
minDocFreq: 1,
)
Expand Down Expand Up @@ -158,7 +158,7 @@
),
),
],
FunctionScoreOptions::make(
options: FunctionScoreOptions::make(
scoreMode: ScoreMode::SUM,
boostMode: BoostMode::SUM
)
Expand Down

0 comments on commit 9ed6647

Please sign in to comment.