* @ingroup Search
*/
abstract class SearchEngine {
+ const DEFAULT_SORT = 'relevance';
+
/** @var string */
public $prefix = '';
/** @var bool */
protected $showSuggestion = true;
- private $sort = 'relevance';
+ private $sort = self::DEFAULT_SORT;
/** @var array Feature values */
protected $features = [];
* @return string
*/
public function normalizeText( $string ) {
- global $wgContLang;
-
// Some languages such as Chinese require word segmentation
- return $wgContLang->segmentByWord( $string );
+ return MediaWikiServices::getInstance()->getContentLanguage()->segmentByWord( $string );
}
/**
* @return SearchNearMatcher
*/
public function getNearMatcher( Config $config ) {
- global $wgContLang;
- return new SearchNearMatcher( $config, $wgContLang );
+ return new SearchNearMatcher( $config,
+ MediaWikiServices::getInstance()->getContentLanguage() );
}
/**
* @return SearchNearMatcher
*/
protected static function defaultNearMatcher() {
- $config = MediaWikiServices::getInstance()->getMainConfig();
- return MediaWikiServices::getInstance()->newSearchEngine()->getNearMatcher( $config );
+ $services = MediaWikiServices::getInstance();
+ $config = $services->getMainConfig();
+ return $services->newSearchEngine()->getNearMatcher( $config );
}
/**
/**
* Get the valid sort directions. All search engines support 'relevance' but others
- * might support more. The default in all implementations should be 'relevance.'
+ * might support more. The default in all implementations must be 'relevance.'
*
* @since 1.25
* @return string[] the valid sort directions for setSort
*/
public function getValidSorts() {
- return [ 'relevance' ];
+ return [ self::DEFAULT_SORT ];
}
/**
$withAllKeyword = true,
$withPrefixSearchExtractNamespaceHook = false
) {
- global $wgContLang;
-
$parsed = $query;
if ( strpos( $query, ':' ) === false ) { // nothing to do
return false;
if ( !$allQuery && strpos( $query, ':' ) !== false ) {
$prefix = str_replace( ' ', '_', substr( $query, 0, strpos( $query, ':' ) ) );
- $index = $wgContLang->getNsIndex( $prefix );
+ $index = MediaWikiServices::getInstance()->getContentLanguage()->getNsIndex( $prefix );
if ( $index !== false ) {
$extractedNamespace = [ $index ];
$parsed = substr( $query, strlen( $prefix ) + 1 );
$results = $this->completionSearchBackendOverfetch( $search );
$fallbackLimit = 1 + $this->limit - $results->getSize();
if ( $fallbackLimit > 0 ) {
- global $wgContLang;
-
- $fallbackSearches = $wgContLang->autoConvertToAllVariants( $search );
+ $fallbackSearches = MediaWikiServices::getInstance()->getContentLanguage()->
+ autoConvertToAllVariants( $search );
$fallbackSearches = array_diff( array_unique( $fallbackSearches ), [ $search ] );
foreach ( $fallbackSearches as $fbs ) {