示例#1
0
        /// <summary> Returns sub IndexReader that contains the given document id.
        ///
        /// </summary>
        /// <param name="doc">id of document
        /// </param>
        /// <param name="reader">parent reader
        /// </param>
        /// <returns> sub reader of parent which contains the specified doc id
        /// </returns>
        public static IndexReader SubReader(int doc, IndexReader reader)
        {
            System.Collections.ArrayList subReadersList = new System.Collections.ArrayList();
            ReaderUtil.GatherSubReaders(subReadersList, reader);
            IndexReader[] subReaders = (IndexReader[])subReadersList.ToArray(typeof(IndexReader));
            int[]         docStarts  = new int[subReaders.Length];
            int           maxDoc     = 0;

            for (int i = 0; i < subReaders.Length; i++)
            {
                docStarts[i] = maxDoc;
                maxDoc      += subReaders[i].MaxDoc();
            }
            return(subReaders[ReaderUtil.SubIndex(doc, docStarts)]);
        }
        /// <summary> Returns sub IndexReader that contains the given document id.
        ///
        /// </summary>
        /// <param name="doc">id of document
        /// </param>
        /// <param name="reader">parent reader
        /// </param>
        /// <returns> sub reader of parent which contains the specified doc id
        /// </returns>
        public static IndexReader SubReader(int doc, IndexReader reader)
        {
            var subReadersList = new System.Collections.Generic.List <IndexReader>();

            ReaderUtil.GatherSubReaders(subReadersList, reader);
            IndexReader[] subReaders = subReadersList.ToArray();
            int[]         docStarts  = new int[subReaders.Length];
            int           maxDoc     = 0;

            for (int i = 0; i < subReaders.Length; i++)
            {
                docStarts[i] = maxDoc;
                maxDoc      += subReaders[i].MaxDoc;
            }
            return(subReaders[ReaderUtil.SubIndex(doc, docStarts)]);
        }
示例#3
0
 /// <summary>Returns index of the searcher for document <c>n</c> in the array
 /// used to construct this searcher.
 /// </summary>
 public virtual int SubSearcher(int n)
 {
     // find searcher for doc n:
     return(ReaderUtil.SubIndex(n, starts));
 }