public override bool SkipTo(int target)
 {
     if (FirstTime) // initialize
     {
         InitList(false);
         for (SpansCell cell = First; More && cell != null; cell = cell.Next_Renamed)
         {
             More = cell.SkipTo(target); // skip all
         }
         if (More)
         {
             ListToQueue();
         }
         FirstTime = false;
     } // normal case
     else
     {
         while (More && Min().Doc() < target) // skip as needed
         {
             if (Min().SkipTo(target))
             {
                 Queue.UpdateTop();
             }
             else
             {
                 More = false;
             }
         }
     }
     return(More && (AtMatch() || Next()));
 }
 public override bool SkipTo(int target)
 {
     if (firstTime) // initialize
     {
         InitList(false);
         for (SpansCell cell = first; more && cell != null; cell = cell.next)
         {
             more = cell.SkipTo(target); // skip all
         }
         if (more)
         {
             ListToQueue();
         }
         firstTime = false;
     } // normal case
     else
     {
         while (more && Min.Doc < target) // skip as needed
         {
             if (Min.SkipTo(target))
             {
                 queue.UpdateTop();
             }
             else
             {
                 more = false;
             }
         }
     }
     return(more && (AtMatch || Next()));
 }
Exemple #3
0
 public virtual bool SkipTo(int target)
 {
     if (firstTime)
     {
         // initialize
         InitList(false);
         for (SpansCell cell = first; more && cell != null; cell = cell.next)
         {
             more = cell.SkipTo(target);                     // skip all
         }
         if (more)
         {
             ListToQueue();
         }
         firstTime = false;
     }
     else
     {
         // normal case
         while (more && Min().Doc() < target)
         {
             // skip as needed
             if (Min().SkipTo(target))
             {
                 queue.AdjustTop();
             }
             else
             {
                 more = false;
             }
         }
     }
     return(more && (AtMatch() || Next()));
 }
        public override bool Next()
        {
            if (FirstTime)
            {
                InitList(true);
                ListToQueue(); // initialize queue
                FirstTime = false;
            }
            else if (More)
            {
                if (Min().Next())      // trigger further scanning
                {
                    Queue.UpdateTop(); // maintain queue
                }
                else
                {
                    More = false;
                }
            }

            while (More)
            {
                bool queueStale = false;

                if (Min().Doc() != Max.Doc()) // maintain list
                {
                    QueueToList();
                    queueStale = true;
                }

                // skip to doc w/ all clauses

                while (More && First.Doc() < Last.Doc())
                {
                    More = First.SkipTo(Last.Doc()); // skip first upto last
                    FirstToLast();                   // and move it to the end
                    queueStale = true;
                }

                if (!More)
                {
                    return(false);
                }

                // found doc w/ all clauses

                if (queueStale) // maintain the queue
                {
                    ListToQueue();
                    queueStale = false;
                }

                if (AtMatch())
                {
                    return(true);
                }

                More = Min().Next();
                if (More)
                {
                    Queue.UpdateTop(); // maintain queue
                }
            }
            return(false); // no more matches
        }
        public override bool Next()
        {
            if (firstTime)
            {
                InitList(true);
                ListToQueue(); // initialize queue
                firstTime = false;
            }
            else if (more)
            {
                if (Min.Next())        // trigger further scanning
                {
                    queue.UpdateTop(); // maintain queue
                }
                else
                {
                    more = false;
                }
            }

            while (more)
            {
                bool queueStale = false;

                if (Min.Doc != max.Doc) // maintain list
                {
                    QueueToList();
                    queueStale = true;
                }

                // skip to doc w/ all clauses

                while (more && first.Doc < last.Doc)
                {
                    more = first.SkipTo(last.Doc); // skip first upto last
                    FirstToLast();                 // and move it to the end
                    queueStale = true;
                }

                if (!more)
                {
                    return(false);
                }

                // found doc w/ all clauses

                if (queueStale) // maintain the queue
                {
                    ListToQueue();
                    queueStale = false;
                }

                if (AtMatch)
                {
                    return(true);
                }

                more = Min.Next();
                if (more)
                {
                    queue.UpdateTop(); // maintain queue
                }
            }
            return(false); // no more matches
        }
Exemple #6
0
        public virtual bool Next()
        {
            if (firstTime)
            {
                InitList(true);
                ListToQueue();                 // initialize queue
                firstTime = false;
            }
            else if (more)
            {
                if (Min().Next())
                {
                    // trigger further scanning
                    queue.AdjustTop();                     // maintain queue
                }
                else
                {
                    more = false;
                }
            }

            while (more)
            {
                bool queueStale = false;

                if (Min().Doc() != max.Doc())
                {
                    // maintain list
                    QueueToList();
                    queueStale = true;
                }

                // skip to doc w/ all clauses

                while (more && first.Doc() < last.Doc())
                {
                    more = first.SkipTo(last.Doc());   // skip first upto last
                    FirstToLast();                     // and move it to the end
                    queueStale = true;
                }

                if (!more)
                {
                    return(false);
                }

                // found doc w/ all clauses

                if (queueStale)
                {
                    // maintain the queue
                    ListToQueue();
                    queueStale = false;
                }

                if (AtMatch())
                {
                    return(true);
                }

                more = Min().Next();
                if (more)
                {
                    queue.AdjustTop();                     // maintain queue
                }
            }
            return(false);            // no more matches
        }
Exemple #7
0
        public override bool MoveNext()
        {
            if (firstTime)
            {
                InitList(true);
                ListToQueue(); // initialize queue
                firstTime = false;
            }
            else if (more)
            {
                if (Min.MoveNext())    // trigger further scanning
                {
                    queue.UpdateTop(); // maintain queue
                }
                else
                {
                    more = false;
                }
            }

            while (more)
            {
                bool queueStale = false;

                if (Min.Doc != max.Doc) // maintain list
                {
                    QueueToList();
                    queueStale = true;
                }

                // skip to doc w/ all clauses

                while (more && first.Doc < last.Doc)
                {
                    more = first.SkipTo(last.Doc); // skip first upto last
                    FirstToLast();                 // and move it to the end
                    queueStale = true;
                }

                if (!more)
                {
                    return(false);
                }

                // found doc w/ all clauses

                if (queueStale) // maintain the queue
                {
                    ListToQueue();
                    //queueStale = false; // LUCENENET: IDE0059: Remove unnecessary value assignment (this is reset to false at the beginning of the loop)
                }

                if (AtMatch)
                {
                    return(true);
                }

                more = Min.MoveNext();
                if (more)
                {
                    queue.UpdateTop(); // maintain queue
                }
            }
            return(false); // no more matches
        }
Exemple #8
0
        public virtual bool Next()
        {
            if (firstTime)
            {
                InitList(true);
                ListToQueue();                 // initialize queue
                firstTime = false;
            }
            else if (more)
            {
                more = Min().Next();                 // trigger further scanning
                if (more)
                {
                    queue.AdjustTop();                     // maintain queue
                }
            }

            while (more)
            {
                bool queueStale = false;

                if (Min().Doc() != max.Doc())
                {
                    // maintain list
                    QueueToList();
                    queueStale = true;
                }

                // skip to doc w/ all clauses

                while (more && first.Doc() < last.Doc())
                {
                    more = first.SkipTo(last.Doc());   // skip first upto last
                    FirstToLast();                     // and move it to the end
                    queueStale = true;
                }

                if (!more)
                {
                    return(false);
                }

                // found doc w/ all clauses

                if (queueStale)
                {
                    // maintain the queue
                    ListToQueue();
                    queueStale = false;
                }

                if (AtMatch())
                {
                    return(true);
                }

                // trigger further scanning
                if (inOrder && CheckSlop())
                {
                    /* There is a non ordered match within slop and an ordered match is needed. */
                    more = FirstNonOrderedNextToPartialList();
                    if (more)
                    {
                        PartialListToQueue();
                    }
                }
                else
                {
                    more = Min().Next();
                    if (more)
                    {
                        queue.AdjustTop();                         // maintain queue
                    }
                }
            }
            return(false);            // no more matches
        }