Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
QueryParserFactory | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
newFullTextQueryParser | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | namespace CirrusSearch\Parser; |
4 | |
5 | use CirrusSearch\CirrusSearchHookRunner; |
6 | use CirrusSearch\Parser\QueryStringRegex\QueryStringRegexParser; |
7 | use CirrusSearch\Search\Escaper; |
8 | use CirrusSearch\SearchConfig; |
9 | use MediaWiki\Sparql\SparqlClient; |
10 | |
11 | /** |
12 | * Simple factory to create QueryParser instance based on the host wiki config. |
13 | * @see QueryParser |
14 | */ |
15 | class QueryParserFactory { |
16 | |
17 | /** |
18 | * Get the default fulltext parser. |
19 | * @param SearchConfig $config the host wiki config |
20 | * @param NamespacePrefixParser $namespacePrefix |
21 | * @param CirrusSearchHookRunner $cirrusSearchHookRunner |
22 | * @param SparqlClient|null $client |
23 | * @return QueryParser |
24 | * @throws ParsedQueryClassifierException |
25 | */ |
26 | public static function newFullTextQueryParser( |
27 | SearchConfig $config, |
28 | NamespacePrefixParser $namespacePrefix, |
29 | CirrusSearchHookRunner $cirrusSearchHookRunner, |
30 | ?SparqlClient $client = null |
31 | ) { |
32 | $escaper = new Escaper( $config->get( 'LanguageCode' ), $config->get( 'CirrusSearchAllowLeadingWildcard' ) ); |
33 | $repository = new FTQueryClassifiersRepository( $config, $cirrusSearchHookRunner ); |
34 | return new QueryStringRegexParser( new FullTextKeywordRegistry( $config, $cirrusSearchHookRunner, $namespacePrefix, $client ), |
35 | $escaper, $config->get( 'CirrusSearchStripQuestionMarks' ), $repository, $namespacePrefix, |
36 | $config->get( "CirrusSearchMaxFullTextQueryLength" ) ); |
37 | } |
38 | |
39 | } |