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