4 use Wikimedia\ObjectFactory\ObjectFactory;
20 private $hookContainer;
23 private $loadBalancer;
35 $this->config = $config;
36 $this->hookContainer = $hookContainer;
37 $this->loadBalancer = $loadBalancer;
47 $configuredClass = $this->config->getSearchType();
48 $alternativesClasses = $this->config->getSearchTypes();
50 if (
$type !==
null && in_array(
$type, $alternativesClasses ) ) {
52 } elseif ( $configuredClass !==
null ) {
53 $class = $configuredClass;
58 $mappings = $this->config->getSearchMappings();
61 $spec = $mappings[$class] ?? [
'class' => $class ];
65 if ( isset( $spec[
'class'] ) && is_subclass_of( $spec[
'class'], SearchDatabase::class ) ) {
66 $args[
'extraArgs'][] = $this->loadBalancer;
71 $engine = ObjectFactory::getObjectFromSpec( $spec, $args );
73 $engine->setHookContainer( $this->hookContainer );
85 : $dbOrLb->getServerType( $dbOrLb->getWriterIndex() );
89 return SearchSqlite::class;
91 return SearchMySQL::class;
93 return SearchPostgres::class;
95 return SearchEngineDummy::class;
Configuration handling class for SearchEngine.
Factory class for SearchEngine.
__construct(SearchEngineConfig $config, HookContainer $hookContainer, ILoadBalancer $loadBalancer)
create( $type=null)
Create SearchEngine of the given type.
static getSearchEngineClass( $dbOrLb)