33 use \MediaWiki\Api\SearchApi;
41 parent::__construct( $query, $moduleName,
'ps' );
43 $this->searchEngineConfig = $searchEngineConfig;
44 $this->searchEngineFactory = $searchEngineFactory;
52 $this->run( $resultPageSet );
58 private function run( $resultPageSet =
null ) {
60 $search = $params[
'search'];
61 $limit = $params[
'limit'];
62 $offset = $params[
'offset'];
65 $suggestions = $searchEngine->completionSearchWithVariants( $search );
66 $titles = $searchEngine->extractTitles( $suggestions );
68 if ( $suggestions->hasMoreResults() ) {
72 if ( $resultPageSet ) {
73 $resultPageSet->setRedirectMergePolicy(
static function ( array $current, array $new ) {
74 if ( !isset( $current[
'index'] ) || $new[
'index'] < $current[
'index'] ) {
75 $current[
'index'] = $new[
'index'];
79 $resultPageSet->populateFromTitles( $titles );
80 foreach ( $titles as $index => $title ) {
81 $resultPageSet->setGeneratorData( $title, [
'index' => $index + $offset + 1 ] );
86 foreach ( $titles as $title ) {
88 'ns' => $title->getNamespace(),
89 'title' => $title->getPrefixedText(),
91 if ( $title->isSpecialPage() ) {
92 $vals[
'special'] =
true;
94 $vals[
'pageid'] = (int)$title->getArticleID();
96 $fit = $result->addValue( [
'query', $this->
getModuleName() ],
null, $vals );
103 $result->addIndexedTagName(
120 'profile-type' => SearchEngine::COMPLETION_PROFILE_TYPE,
121 'help-message' =>
'apihelp-query+prefixsearch-param-profile',
128 'action=query&list=prefixsearch&pssearch=meaning'
129 =>
'apihelp-query+prefixsearch-example-simple',
134 return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Prefixsearch';
139class_alias( ApiQueryPrefixSearch::class,
'ApiQueryPrefixSearch' );
Configuration handling class for SearchEngine.
Factory class for SearchEngine.
Contain a class for special pages.