607: def add_indexes(indexes)
608: @dir.synchrolock do
609: ensure_writer_open()
610: indexes = [indexes].flatten
611: return if indexes.size == 0
612: if indexes[0].is_a?(Index)
613: indexes.delete(self)
614: indexes = indexes.map {|index| index.reader }
615: elsif indexes[0].is_a?(Ferret::Store::Directory)
616: indexes.delete(@dir)
617: indexes = indexes.map {|dir| IndexReader.new(dir) }
618: elsif indexes[0].is_a?(IndexReader)
619: indexes.delete(@reader)
620: else
621: raise ArgumentError, "Unknown index type when trying to merge indexes"
622: end
623: ensure_writer_open
624: @writer.add_readers(indexes)
625: end
626: end