50 ApiBase::PARAM_TYPE =>
'string',
51 ApiBase::PARAM_REQUIRED =>
true,
55 ApiBase::PARAM_TYPE =>
'namespace',
56 ApiBase::PARAM_ISMULTI =>
true,
59 ApiBase::PARAM_DFLT => 10,
60 ApiBase::PARAM_TYPE =>
'limit',
61 ApiBase::PARAM_MIN => 1,
62 ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
63 ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2,
66 if ( $isScrollable ) {
68 ApiBase::PARAM_DFLT => 0,
69 ApiBase::PARAM_TYPE =>
'integer',
70 ApiBase::PARAM_HELP_MSG =>
'api-help-param-continue',
75 $alternatives = $searchConfig->getSearchTypes();
76 if ( count( $alternatives ) > 1 ) {
77 if ( $alternatives[0] ===
null ) {
78 $alternatives[0] = self::$BACKEND_NULL_PARAM;
80 $params[
'backend'] = [
81 ApiBase::PARAM_DFLT => $searchConfig->getSearchType(),
82 ApiBase::PARAM_TYPE => $alternatives,
106 $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
108 foreach ( $configs as $paramName => $paramConfig ) {
109 $profiles = $searchEngine->getProfiles( $paramConfig[
'profile-type'],
117 $defaultProfile =
null;
118 foreach ( $profiles as $profile ) {
119 $types[] = $profile[
'name'];
120 if ( isset( $profile[
'desc-message'] ) ) {
121 $helpMessages[$profile[
'name']] = $profile[
'desc-message'];
124 if ( !empty( $profile[
'default'] ) ) {
125 $defaultProfile = $profile[
'name'];
129 $params[$paramName] = [
130 ApiBase::PARAM_TYPE => $types,
131 ApiBase::PARAM_HELP_MSG => $paramConfig[
'help-message'],
132 ApiBase::PARAM_HELP_MSG_PER_VALUE => $helpMessages,
133 ApiBase::PARAM_DFLT => $defaultProfile,
154 if ( $params !=
null ) {
155 $type = $params[
'backend'] ??
null;
156 if (
$type === self::$BACKEND_NULL_PARAM ) {
159 $searchEngine = MediaWikiServices::getInstance()->getSearchEngineFactory()->create(
$type );
160 $limit = $params[
'limit'];
161 $searchEngine->setNamespaces( $params[
'namespace'] );
162 $offset = $params[
'offset'] ??
null;
163 $searchEngine->setLimitOffset( $limit, $offset );
167 foreach ( $configs as $paramName => $paramConfig ) {
168 if ( isset( $params[$paramName] ) ) {
169 $searchEngine->setFeatureData(
170 $paramConfig[
'profile-type'],
176 $searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
178 return $searchEngine;