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