Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
QueryParserFactory
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 newFullTextQueryParser
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace CirrusSearch\Parser;
4
5use CirrusSearch\CirrusSearchHookRunner;
6use CirrusSearch\Parser\QueryStringRegex\QueryStringRegexParser;
7use CirrusSearch\Search\Escaper;
8use CirrusSearch\SearchConfig;
9use MediaWiki\Sparql\SparqlClient;
10
11/**
12 * Simple factory to create QueryParser instance based on the host wiki config.
13 * @see QueryParser
14 */
15class 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}