public function queue()
    {
        $log = $this->getLogger();
        $log->info('Queueing operation started', array('collections' => count($this)));

        $event = new CollectorEvent($this);
        $this->dispatchEvent(SearchEvents::COLLECTOR_PRE_QUEUE, $event);

        $num_queued = 0;
        foreach ($this->_collections as $collection) {
            $num_queued += $this->queueCollection($collection);
        }

        $this->dispatchEvent(SearchEvents::COLLECTOR_POST_QUEUE, $event);

        $log->info('Queueing operation completed', array('queued' => $num_queued));
        return $num_queued;
    }