4 use Wikimedia\ObjectFactory\ObjectFactory;
19 private $hookContainer;
33 $this->config = $config;
34 $this->hookContainer = $hookContainer;
35 $this->dbProvider = $dbProvider;
44 public function create( $type =
null ) {
45 $configuredClass = $this->config->getSearchType();
46 $alternativesClasses = $this->config->getSearchTypes();
48 if ( $type !==
null && in_array( $type, $alternativesClasses ) ) {
50 } elseif ( $configuredClass !==
null ) {
51 $class = $configuredClass;
56 $mappings = $this->config->getSearchMappings();
59 $spec = $mappings[$class] ?? [
'class' => $class ];
63 if ( isset( $spec[
'class'] ) && is_subclass_of( $spec[
'class'], SearchDatabase::class ) ) {
64 $args[
'extraArgs'][] = $this->dbProvider;
69 $engine = ObjectFactory::getObjectFromSpec( $spec, $args );
71 $engine->setHookContainer( $this->hookContainer );
85 return SearchSqlite::class;
87 return SearchMySQL::class;
89 return SearchPostgres::class;
91 return SearchEngineDummy::class;
Configuration handling class for SearchEngine.
Factory class for SearchEngine.
create( $type=null)
Create SearchEngine of the given type.
__construct(SearchEngineConfig $config, HookContainer $hookContainer, IConnectionProvider $dbProvider)
static getSearchEngineClass(IConnectionProvider $dbProvider)