Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
90.00% |
9 / 10 |
|
66.67% |
2 / 3 |
CRAP | |
0.00% |
0 / 1 |
MediaSearchQueryBuilder | |
90.00% |
9 / 10 |
|
66.67% |
2 / 3 |
4.02 | |
0.00% |
0 / 1 |
__construct | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
build | |
100.00% |
7 / 7 |
|
100.00% |
1 / 1 |
2 | |||
buildDegraded | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace Wikibase\MediaInfo\Search; |
4 | |
5 | use CirrusSearch\Query\FullTextQueryBuilder; |
6 | use CirrusSearch\Query\KeywordFeature; |
7 | use CirrusSearch\Search\SearchContext; |
8 | use Elastica\Query\BoolQuery; |
9 | |
10 | class MediaSearchQueryBuilder implements FullTextQueryBuilder { |
11 | public const SEARCH_PROFILE_CONTEXT_NAME = 'mediasearch'; |
12 | |
13 | /** @var KeywordFeature[] */ |
14 | private $features; |
15 | |
16 | /** @var MediaSearchASTQueryBuilder */ |
17 | protected $queryBuilder; |
18 | |
19 | /** |
20 | * @param KeywordFeature[] $features |
21 | * @param MediaSearchASTQueryBuilder $queryBuilder |
22 | */ |
23 | public function __construct( |
24 | array $features, |
25 | MediaSearchASTQueryBuilder $queryBuilder |
26 | ) { |
27 | $this->features = $features; |
28 | $this->queryBuilder = $queryBuilder; |
29 | } |
30 | |
31 | /** |
32 | * Search articles with provided term. |
33 | * |
34 | * @param SearchContext $context |
35 | * @param string $term |
36 | */ |
37 | public function build( SearchContext $context, $term ) { |
38 | foreach ( $this->features as $feature ) { |
39 | $feature->apply( $context, $term ); |
40 | } |
41 | |
42 | $parsedQuery = $context->getSearchQuery()->getParsedQuery(); |
43 | $context->setMainQuery( |
44 | ( new BoolQuery() ) |
45 | ->addMust( $this->queryBuilder->getQuery( $parsedQuery ) ) |
46 | ); |
47 | } |
48 | |
49 | public function buildDegraded( SearchContext $searchContext ): bool { |
50 | return false; |
51 | } |
52 | } |