NextDoc() public abstract method

Advances to the next document in the set and returns the doc it is currently on, or #NO_MORE_DOCS if there are no more docs in the set.
NOTE: after the iterator has exhausted you should not call this method, as it may result in unpredicted behavior. @since 2.9
public abstract NextDoc ( ) : int
return int
Beispiel #1
0
        internal virtual int GetDocIdSetSize(DocIdSet docIdSet)
        {
            int size            = 0;
            DocIdSetIterator it = docIdSet.Iterator();

            while (it.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)
            {
                size++;
            }
            return(size);
        }
        private void TstFilterCard(String mes, int expected, Filter filt)
        {
            DocIdSetIterator disi = filt.GetDocIdSet(reader).Iterator();
            int actual            = 0;

            while (disi.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)
            {
                actual++;
            }
            Assert.AreEqual(expected, actual, mes);
        }
Beispiel #3
0
            private void Initialize()
            {
                it1 = parent.innerSet.Iterator();

                try
                {
                    if ((innerDocid = it1.NextDoc()) == DocIdSetIterator.NO_MORE_DOCS) it1 = null;
                }
                catch
                {                 
                }
            }
        public override BitArray Bits(IndexReader reader)
        {
            BitArray         bits = new BitArray(reader.MaxDoc());
            DocIdSetIterator it   = filter.GetDocIdSet(reader).Iterator();
            int doc = DocIdSetIterator.NO_MORE_DOCS;

            while ((doc = it.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
            {
                bits.Set(doc, true);
            }
            return(bits);
        }
Beispiel #5
0
        /// <summary>
        /// Map each term to the single group that contains it </summary>
        private static IDictionary <Term, int> TermGroups(JCG.LinkedDictionary <Term, int?> tord, IList <FixedBitSet> bb) // LUCENENET: CA1822: Mark members as static
        {
            Dictionary <Term, int> tg = new Dictionary <Term, int>();

            Term[] t = tord.Keys.ToArray(/*new Term[0]*/);
            for (int i = 0; i < bb.Count; i++) // i is the group no.
            {
                DocIdSetIterator bits = bb[i].GetIterator();
                int ord;
                while ((ord = bits.NextDoc()) != NO_MORE_DOCS)
                {
                    tg[t[ord]] = i;
                }
            }
            return(tg);
        }
Beispiel #6
0
        /// <summary>
        /// Map each term to the single group that contains it </summary>
        private IDictionary <Term, int> TermGroups(LinkedHashMap <Term, int?> tord, IList <FixedBitSet> bb)
        {
            Dictionary <Term, int> tg = new Dictionary <Term, int>();

            Term[] t = tord.Keys.ToArray(/*new Term[0]*/);
            for (int i = 0; i < bb.Count; i++) // i is the group no.
            {
                DocIdSetIterator bits = bb[i].GetIterator();
                int ord;
                while ((ord = bits.NextDoc()) != NO_MORE_DOCS)
                {
                    tg[t[ord]] = i;
                }
            }
            return(tg);
        }
Beispiel #7
0
        /*[STAThread]
         * public static void  Main(System.String[] args)
         * {
         *      // TestRunner.run(suite()); // {{Aroush-2.9}} how is this done in NUnit?
         * }*/

        /*public static Test suite()
         * {
         *      return new TestSuite(typeof(TestBooleanPrefixQuery));
         * }*/

        /*public TestBooleanPrefixQuery(System.String name):base(name)
         * {
         * }*/

        private int GetCount(IndexReader r, Query q)
        {
            if (q is BooleanQuery)
            {
                return(((BooleanQuery)q).GetClauses().Length);
            }
            else if (q is ConstantScoreQuery)
            {
                DocIdSetIterator iter = ((ConstantScoreQuery)q).GetFilter().GetDocIdSet(r).Iterator();
                int count             = 0;
                while (iter.NextDoc() != DocIdSetIterator.NO_MORE_DOCS)
                {
                    count++;
                }
                return(count);
            }
            else
            {
                throw new System.SystemException("unepxected query " + q);
            }
        }
Beispiel #8
0
        public virtual void  TestFilteredDocIdSet()
        {
            int      maxdoc   = 10;
            DocIdSet innerSet = new AnonymousClassDocIdSet_Renamed_Class(maxdoc, this);


            DocIdSet filteredSet = new AnonymousClassFilteredDocIdSet(this, innerSet);

            DocIdSetIterator iter = filteredSet.Iterator(null);

            System.Collections.ArrayList list = new System.Collections.ArrayList();
            int doc = iter.Advance(3, null);

            if (doc != DocIdSetIterator.NO_MORE_DOCS)
            {
                list.Add((System.Int32)doc);
                while ((doc = iter.NextDoc(null)) != DocIdSetIterator.NO_MORE_DOCS)
                {
                    list.Add((System.Int32)doc);
                }
            }

            int[] docs = new int[list.Count];
            int   c    = 0;

            System.Collections.IEnumerator intIter = list.GetEnumerator();
            while (intIter.MoveNext())
            {
                docs[c++] = ((System.Int32)intIter.Current);
            }
            int[] answer = new int[] { 4, 6, 8 };
            bool  same   = CollectionsHelper.Equals(answer, docs);

            if (!same)
            {
                System.Console.Out.WriteLine("answer: " + _TestUtil.ArrayToString(answer));
                System.Console.Out.WriteLine("gotten: " + _TestUtil.ArrayToString(docs));
                Assert.Fail();
            }
        }
Beispiel #9
0
            public override Scorer FilteredScorer(AtomicReaderContext context, Weight weight, DocIdSet docIdSet)
            {
                DocIdSetIterator filterIter = docIdSet.GetIterator();

                if (filterIter == null)
                {
                    // this means the filter does not accept any documents.
                    return(null);
                }

                int firstFilterDoc = filterIter.NextDoc();

                if (firstFilterDoc == DocIdSetIterator.NO_MORE_DOCS)
                {
                    return(null);
                }

                IBits filterAcceptDocs = docIdSet.Bits;
                // force if RA is requested
                bool useRandomAccess = filterAcceptDocs != null && UseRandomAccess(filterAcceptDocs, firstFilterDoc);

                if (useRandomAccess)
                {
                    // if we are using random access, we return the inner scorer, just with other acceptDocs
                    return(weight.GetScorer(context, filterAcceptDocs));
                }
                else
                {
                    if (Debugging.AssertsEnabled)
                    {
                        Debugging.Assert(firstFilterDoc > -1);
                    }
                    // we are gonna advance() this scorer, so we set inorder=true/toplevel=false
                    // we pass null as acceptDocs, as our filter has already respected acceptDocs, no need to do twice
                    Scorer scorer = weight.GetScorer(context, null);
                    // TODO once we have way to figure out if we use RA or LeapFrog we can remove this scorer
                    return((scorer == null) ? null : new PrimaryAdvancedLeapFrogScorer(weight, firstFilterDoc, filterIter, scorer));
                }
            }
Beispiel #10
0
        public virtual void TestFilteredDocIdSet()
        {
            const int maxdoc   = 10;
            DocIdSet  innerSet = new DocIdSetAnonymousClass(this, maxdoc);

            DocIdSet filteredSet = new FilteredDocIdSetAnonymousClass(this, innerSet);

            DocIdSetIterator iter = filteredSet.GetIterator();
            IList <int>      list = new JCG.List <int>();
            int doc = iter.Advance(3);

            if (doc != DocIdSetIterator.NO_MORE_DOCS)
            {
                list.Add(Convert.ToInt32(doc));
                while ((doc = iter.NextDoc()) != DocIdSetIterator.NO_MORE_DOCS)
                {
                    list.Add(Convert.ToInt32(doc));
                }
            }

            int[] docs = new int[list.Count];
            int   c    = 0;

            using IEnumerator <int> intIter = list.GetEnumerator();
            while (intIter.MoveNext())
            {
                docs[c++] = intIter.Current;
            }
            int[] answer = new int[] { 4, 6, 8 };
            bool  same   = Arrays.Equals(answer, docs);

            if (!same)
            {
                Console.WriteLine("answer: " + Arrays.ToString(answer));
                Console.WriteLine("gotten: " + Arrays.ToString(docs));
                Assert.Fail();
            }
        }
Beispiel #11
0
 protected virtual int PrimaryNext()
 {
     return(primary.NextDoc());
 }
 public override int NextDoc()
 {
     return(docIdSetIterator.NextDoc());
 }
Beispiel #13
0
 public bool MoveNext()
 {
     _CurrentDocId = _ResultIterator.NextDoc();
     return(_CurrentDocId != DocIdSetIterator.NO_MORE_DOCS && ++_ItemsReturned <= _MaxDocPerFacet);
 }
Beispiel #14
0
 public override int NextDoc(IState state)
 {
     return(docIdSetIterator.NextDoc(state));
 }
Beispiel #15
0
 public override bool Next()
 {
     return(docIdSetIterator.NextDoc() != NO_MORE_DOCS);
 }
Beispiel #16
0
 protected internal virtual int PrimaryNext()
 {
     return(Primary.NextDoc());
 }