From a1789ddde42033f1b05cc4929491214ee6e79383 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 17 Dec 2015 09:15:42 +0100 Subject: Update to MediaWiki 1.26.0 --- includes/api/ApiQuerySearch.php | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'includes/api/ApiQuerySearch.php') diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php index e29ef8d2..b866f43e 100644 --- a/includes/api/ApiQuerySearch.php +++ b/includes/api/ApiQuerySearch.php @@ -82,6 +82,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { SearchEngine::create( $params['backend'] ) : SearchEngine::create(); $search->setLimitOffset( $limit + 1, $params['offset'] ); $search->setNamespaces( $params['namespace'] ); + $search->setFeatureData( 'rewrite', (bool)$params['enablerewrites'] ); $query = $search->transformSearchTerm( $query ); $query = $search->replacePrefixes( $query ); @@ -92,7 +93,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { } elseif ( $what == 'title' ) { $matches = $search->searchTitle( $query ); } elseif ( $what == 'nearmatch' ) { - $matches = SearchEngine::getNearMatchResultSet( $query ); + // near matches must receive the user input as provided, otherwise + // the near matches within namespaces are lost. + $matches = SearchEngine::getNearMatchResultSet( $params['search'] ); } else { // We default to title searches; this is a terrible legacy // of the way we initially set up the MySQL fulltext-based @@ -129,6 +132,14 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) { $apiResult->addValue( array( 'query', 'searchinfo' ), 'suggestion', $matches->getSuggestionQuery() ); + $apiResult->addValue( array( 'query', 'searchinfo' ), + 'suggestionsnippet', $matches->getSuggestionSnippet() ); + } + if ( isset( $searchInfo['rewrittenquery'] ) && $matches->hasRewrittenQuery() ) { + $apiResult->addValue( array( 'query', 'searchinfo' ), + 'rewrittenquery', $matches->getQueryAfterRewrite() ); + $apiResult->addValue( array( 'query', 'searchinfo' ), + 'rewrittenquerysnippet', $matches->getQueryAfterRewriteSnippet() ); } } @@ -172,6 +183,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { if ( isset( $prop['titlesnippet'] ) ) { $vals['titlesnippet'] = $result->getTitleSnippet(); } + if ( isset( $prop['categorysnippet'] ) ) { + $vals['categorysnippet'] = $result->getCategorySnippet(); + } if ( !is_null( $result->getRedirectTitle() ) ) { if ( isset( $prop['redirecttitle'] ) ) { $vals['redirecttitle'] = $result->getRedirectTitle()->getPrefixedText(); @@ -188,6 +202,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { $vals['sectionsnippet'] = $result->getSectionSnippet(); } } + if ( isset( $prop['isfilematch'] ) ) { + $vals['isfilematch'] = $result->isFileMatch(); + } // Add item to results and see whether it fits $fit = $apiResult->addValue( array( 'query', $this->getModuleName() ), @@ -228,7 +245,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { // Add item to results and see whether it fits $fit = $apiResult->addValue( - array( 'query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix() ), + array( 'query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix() ), null, $vals ); @@ -293,10 +310,11 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { ) ), 'info' => array( - ApiBase::PARAM_DFLT => 'totalhits|suggestion', + ApiBase::PARAM_DFLT => 'totalhits|suggestion|rewrittenquery', ApiBase::PARAM_TYPE => array( 'totalhits', 'suggestion', + 'rewrittenquery', ), ApiBase::PARAM_ISMULTI => true, ), @@ -306,16 +324,19 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { 'size', 'wordcount', 'timestamp', - 'score', 'snippet', 'titlesnippet', 'redirecttitle', 'redirectsnippet', 'sectiontitle', 'sectionsnippet', - 'hasrelated', + 'isfilematch', + 'categorysnippet', + 'score', // deprecated + 'hasrelated', // deprecated ), ApiBase::PARAM_ISMULTI => true, + ApiBase::PARAM_HELP_MSG_PER_VALUE => array(), ), 'offset' => array( ApiBase::PARAM_DFLT => 0, @@ -329,6 +350,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2 ), 'interwiki' => false, + 'enablerewrites' => false, ); $alternatives = SearchEngine::getSearchTypes(); -- cgit v1.2.3-54-g00ecf