public BoboSearcher2(BoboIndexReader reader) : base(reader) { _facetCollectors = new List <FacetHitCollector>(); var readerList = new List <IndexReader>(); ReaderUtil.GatherSubReaders(readerList, reader); _subReaders = readerList.Cast <BoboIndexReader>().ToArray(); _docStarts = new int[_subReaders.Length]; int maxDoc = 0; for (int i = 0; i < _subReaders.Length; ++i) { _docStarts[i] = maxDoc; maxDoc += _subReaders[i].MaxDoc; } }
/// <summary> /// Find all the leaf sub-readers and wrap each in BoboIndexReader. /// </summary> /// <param name="reader">reader</param> /// <param name="workArea">workArea</param> /// <returns></returns> private static IndexReader[] CreateSubReaders(IndexReader reader, WorkArea workArea) { List <IndexReader> readerList = new List <IndexReader>(); ReaderUtil.GatherSubReaders(readerList, reader); IndexReader[] subReaders = (IndexReader[])readerList.ToArray(); BoboIndexReader[] boboReaders; var subReaderCount = subReaders.Count(); if (subReaders != null && subReaderCount > 0) { boboReaders = new BoboIndexReader[subReaderCount]; for (int i = 0; i < subReaderCount; i++) { boboReaders[i] = new BoboIndexReader(subReaders[i], null, null, workArea, true, false); } } else { boboReaders = new BoboIndexReader[] { new BoboIndexReader(reader, null, null, workArea, true, false) }; } return(boboReaders); }
protected internal virtual void GatherSubReaders(System.Collections.Generic.IList <IndexReader> allSubReaders, IndexReader r) { ReaderUtil.GatherSubReaders(allSubReaders, r); }