public function load()
    {
        $log = $this->_agent->getLogger();
        $context = array('collection' => $this->_collection->getId());

        // Allow the schema to be loaded from another source.
        $event = new SchemaLoaderEvent($this->_agent, $this->_collection);
        $this->_agent->dispatchEvent(SearchEvents::SCHEMA_LOAD, $event);

        if (!$options = $event->getOptions()) {
            if ($conf_dir = $this->getConfDir()) {

                $filename = $this->_collection->getConfigBasename() . '.yml';
                $filepath = $conf_dir . '/' . $filename;
                $context['filepath'] = $filepath;

                $log->debug('Attempting to parse schema configuration file', $context);
                $options = Yaml::parse($filepath);
                $log->debug('Schema options parsed from configuration file', $context);

            } else {
                $log->notice('Path to conf directory could not be resolved', $context);
            }
        } else {
            $log->debug('Schema configuration loaded from an external source.', $context);
        }

        $schema = new Schema();
        $schema->build($options);
        return $schema;
    }