554: def add_indexes(indexes)
555: @dir.synchronize do
556: indexes = [indexes].flatten
557: return if indexes.size == 0
558: if indexes[0].is_a?(Index)
559: indexes.delete(self)
560: indexes = indexes.map {|index| index.reader }
561: elsif indexes[0].is_a?(Ferret::Store::Directory)
562: indexes.delete(@dir)
563: indexes = indexes.map {|dir| IndexReader.new(dir) }
564: elsif indexes[0].is_a?(IndexReader)
565: indexes.delete(@reader)
566: else
567: raise ArgumentError, "Unknown index type when trying to merge indexes"
568: end
569: ensure_writer_open
570: @writer.add_readers(indexes)
571: end
572: end