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\CirrusConfigNames;
7use CirrusSearch\CirrusSearchHookRunner;
8use CirrusSearch\Parser\QueryStringRegex\QueryStringRegexParser;
9use CirrusSearch\Search\Escaper;
10use CirrusSearch\SearchConfig;
11use MediaWiki\MainConfigNames;
12
13/**
14 * Simple factory to create QueryParser instance based on the host wiki config.
15 * @see QueryParser
16 */
17class QueryParserFactory {
18
19    /**
20     * Get the default fulltext parser.
21     * @param SearchConfig $config the host wiki config
22     * @param NamespacePrefixParser $namespacePrefix
23     * @param CirrusSearchHookRunner $cirrusSearchHookRunner
24     * @param CachedSparqlClient|null $sparql
25     * @return QueryParser
26     * @throws ParsedQueryClassifierException
27     */
28    public static function newFullTextQueryParser(
29        SearchConfig $config,
30        NamespacePrefixParser $namespacePrefix,
31        CirrusSearchHookRunner $cirrusSearchHookRunner,
32        ?CachedSparqlClient $sparql = null
33    ) {
34        $escaper = new Escaper(
35            $config->get( MainConfigNames::LanguageCode ),
36            $config->get( CirrusConfigNames::AllowLeadingWildcard )
37        );
38        $repository = new FTQueryClassifiersRepository( $config, $cirrusSearchHookRunner );
39        return new QueryStringRegexParser( new FullTextKeywordRegistry( $config, $cirrusSearchHookRunner, $namespacePrefix, $sparql ),
40            $escaper, $config->get( CirrusConfigNames::StripQuestionMarks ), $repository, $namespacePrefix,
41            $config->get( CirrusConfigNames::MaxFullTextQueryLength ) );
42    }
43
44}