예제 #1
0
 private CompositeReaderContext(CompositeReaderContext parent, CompositeReader reader, int ordInParent, int docbaseInParent, IList <IndexReaderContext> children, IList <AtomicReaderContext> leaves)
     : base(parent, ordInParent, docbaseInParent)
 {
     this.children = Collections.UnmodifiableList(children);
     this.leaves   = leaves;
     this.reader   = reader;
 }
예제 #2
0
 private CompositeReaderContext(CompositeReaderContext parent, CompositeReader reader, int ordInParent, int docbaseInParent, List <IndexReaderContext> children, IList <AtomicReaderContext> leaves)
     : base(parent, ordInParent, docbaseInParent)
 {
     this.children = children.AsReadOnly();
     this.leaves   = leaves;
     this.reader   = reader;
 }
예제 #3
0
 private CompositeReaderContext(CompositeReaderContext parent, CompositeReader reader, int ordInParent, int docbaseInParent, List<IndexReaderContext> children, IList<AtomicReaderContext> leaves)
     : base(parent, ordInParent, docbaseInParent)
 {
     this.children = children.AsReadOnly();
     this.leaves = leaves;
     this.reader = reader;
 }
예제 #4
0
 /// <summary>
 /// Creates a new <see cref="AtomicReaderContext"/>
 /// </summary>
 internal AtomicReaderContext(CompositeReaderContext parent, AtomicReader reader, int ord, int docBase, int leafOrd, int leafDocBase)
     : base(parent, ord, docBase)
 {
     this.Ord     = leafOrd;
     this.DocBase = leafDocBase;
     this.reader  = reader;
     this.leaves  = IsTopLevel ? new[] { this } : null;
 }
예제 #5
0
 /// <summary>
 /// Creates a new <seealso cref="AtomicReaderContext"/>
 /// </summary>
 internal AtomicReaderContext(CompositeReaderContext parent, AtomicReader reader, int ord, int docBase, int leafOrd, int leafDocBase)
     : base(parent, ord, docBase)
 {
     this.Ord = leafOrd;
     this.DocBase = leafDocBase;
     this.reader = reader;
     this.leaves = IsTopLevel ? new[] { this } : null; //LUCENE TO-DO suspicous
 }
예제 #6
0
 internal IndexReaderContext(CompositeReaderContext parent, int ordInParent, int docBaseInParent)
 {
     if (!(this is CompositeReaderContext || this is AtomicReaderContext))
     {
         throw new Exception("this class should never be extended by custom code!");
     }
     this.Parent = parent;
     this.DocBaseInParent = docBaseInParent;
     this.OrdInParent = ordInParent;
     this.IsTopLevel = parent == null;
 }
예제 #7
0
 internal IndexReaderContext(CompositeReaderContext parent, int ordInParent, int docBaseInParent)
 {
     if (!(this is CompositeReaderContext || this is AtomicReaderContext))
     {
         throw new Exception("this class should never be extended by custom code!");
     }
     this.Parent          = parent;
     this.DocBaseInParent = docBaseInParent;
     this.OrdInParent     = ordInParent;
     this.IsTopLevel      = parent == null;
 }
예제 #8
0
            internal IndexReaderContext Build(CompositeReaderContext parent, IndexReader reader, int ord, int docBase)
            {
                var ar = reader as AtomicReader;

                if (ar != null)
                {
                    var atomic = new AtomicReaderContext(parent, ar, ord, docBase, leaves.Count, leafDocBase);
                    leaves.Add(atomic);
                    leafDocBase += reader.MaxDoc;
                    return(atomic);
                }
                else
                {
                    CompositeReader        cr = (CompositeReader)reader;
                    var                    sequentialSubReaders = cr.GetSequentialSubReaders();
                    var                    children             = new IndexReaderContext[sequentialSubReaders.Count];
                    CompositeReaderContext newParent;
                    if (parent == null)
                    {
                        newParent = new CompositeReaderContext(cr, children, leaves);
                    }
                    else
                    {
                        newParent = new CompositeReaderContext(parent, cr, ord, docBase, children);
                    }
                    int newDocBase = 0;
                    for (int i = 0, c = sequentialSubReaders.Count; i < c; i++)
                    {
                        IndexReader r = sequentialSubReaders[i];
                        children[i] = Build(newParent, r, i, newDocBase);
                        newDocBase += r.MaxDoc;
                    }
                    if (Debugging.AssertsEnabled)
                    {
                        Debugging.Assert(newDocBase == cr.MaxDoc);
                    }
                    return(newParent);
                }
            }
예제 #9
0
 /// <summary>
 /// Creates a <seealso cref="CompositeReaderContext"/> for intermediate readers that aren't
 /// not top-level readers in the current context
 /// </summary>
 internal CompositeReaderContext(CompositeReaderContext parent, CompositeReader reader, int ordInParent, int docbaseInParent, List <IndexReaderContext> children)
     : this(parent, reader, ordInParent, docbaseInParent, children, null)
 {
 }
예제 #10
0
 /// <summary>
 /// Creates a <seealso cref="CompositeReaderContext"/> for intermediate readers that aren't
 /// not top-level readers in the current context
 /// </summary>
 internal CompositeReaderContext(CompositeReaderContext parent, CompositeReader reader, int ordInParent, int docbaseInParent, List<IndexReaderContext> children)
     : this(parent, reader, ordInParent, docbaseInParent, children, null)
 {
 }
예제 #11
0
 internal IndexReaderContext Build(CompositeReaderContext parent, IndexReader reader, int ord, int docBase)
 {
     var ar = reader as AtomicReader;
     if (ar != null)
     {
         var atomic = new AtomicReaderContext(parent, ar, ord, docBase, Leaves.Count, LeafDocBase);
         Leaves.Add(atomic);
         LeafDocBase += reader.MaxDoc;
         return atomic;
     }
     else
     {
         CompositeReader cr = (CompositeReader)reader;
         var sequentialSubReaders = cr.GetSequentialSubReaders();
         var children = Arrays.AsList(new IndexReaderContext[sequentialSubReaders.Count]);
         CompositeReaderContext newParent;
         if (parent == null)
         {
             newParent = new CompositeReaderContext(cr, children, Leaves);
         }
         else
         {
             newParent = new CompositeReaderContext(parent, cr, ord, docBase, children);
         }
         int newDocBase = 0;
         for (int i = 0, c = sequentialSubReaders.Count; i < c; i++)
         {
             IndexReader r = sequentialSubReaders[i];
             children[i] = Build(newParent, r, i, newDocBase);
             newDocBase += r.MaxDoc;
         }
         Debug.Assert(newDocBase == cr.MaxDoc);
         return newParent;
     }
 }