Exemplo n.º 1
0
 public override int NextDoc()
 {
     // (docId + 1) on next line requires -1 initial value for docNr:
     var d = bitSet.NextSetBit(docId + 1);
     // -1 returned by BitSet.nextSetBit() when exhausted
     docId = d == -1 ? NO_MORE_DOCS : d;
     return docId;
 }
Exemplo n.º 2
0
 public override PForDeltaDocIdSet CopyOf(BitSet bs, int length)
 {
     PForDeltaDocIdSet.Builder builder = (new PForDeltaDocIdSet.Builder()).SetIndexInterval(TestUtil.NextInt32(Random, 1, 20));
     for (int doc = bs.NextSetBit(0); doc != -1; doc = bs.NextSetBit(doc + 1))
     {
         builder.Add(doc);
     }
     return(builder.Build());
 }
Exemplo n.º 3
0
        public override FixedBitSet CopyOf(BitSet bs, int length)
        {
            FixedBitSet set = new FixedBitSet(length);

            for (int doc = bs.NextSetBit(0); doc != -1; doc = bs.NextSetBit(doc + 1))
            {
                set.Set(doc);
            }
            return(set);
        }
Exemplo n.º 4
0
        public override WAH8DocIdSet CopyOf(BitSet bs, int length)
        {
            int indexInterval = TestUtil.NextInt32(Random, 8, 256);

            WAH8DocIdSet.Builder builder = (WAH8DocIdSet.Builder)(new WAH8DocIdSet.Builder()).SetIndexInterval(indexInterval);
            for (int i = bs.NextSetBit(0); i != -1; i = bs.NextSetBit(i + 1))
            {
                builder.Add(i);
            }
            return(builder.Build());
        }
Exemplo n.º 5
0
 public virtual void Collect(int doc, float score)
 {
     pos = answer.NextSetBit(pos + 1);
     if (pos != doc + docBase)
     {
         throw RuntimeException.Create("Expected doc " + pos + " but got " + doc + docBase);
     }
     base.Collect(doc);
 }
Exemplo n.º 6
0
 public override int NextDoc()
 {
     doc = bs.NextSetBit(doc + 1);
     if (doc == -1)
     {
         doc = NO_MORE_DOCS;
     }
     Debug.Assert(doc < numBits);
     return(doc);
 }
Exemplo n.º 7
0
        internal virtual void DoNextSetBit(BitSet a, FixedBitSet b)
        {
            int aa = -1, bb = -1;

            do
            {
                aa = a.NextSetBit(aa + 1);
                bb = bb < b.Length - 1 ? b.NextSetBit(bb + 1) : -1;
                Assert.AreEqual(aa, bb);
            } while (aa >= 0);
        }
Exemplo n.º 8
0
        internal virtual void DoIterate2(BitSet a, FixedBitSet b)
        {
            int aa = -1, bb = -1;
            DocIdSetIterator iterator = b.GetIterator();

            do
            {
                aa = a.NextSetBit(aa + 1);
                bb = Random.NextBoolean() ? iterator.NextDoc() : iterator.Advance(bb + 1);
                Assert.AreEqual(aa == -1 ? DocIdSetIterator.NO_MORE_DOCS : aa, bb);
            } while (aa >= 0);
        }
Exemplo n.º 9
0
 public override int NextDoc()
 {
     doc = bs.NextSetBit(doc + 1);
     if (doc == -1)
     {
         doc = NO_MORE_DOCS;
     }
     if (Debugging.AssertsEnabled)
     {
         Debugging.Assert(doc < numBits);
     }
     return(doc);
 }
Exemplo n.º 10
0
        /// <summary>
        /// Assert that the content of the <see cref="DocIdSet"/> is the same as the content of the <see cref="BitSet"/>.
        /// </summary>
#pragma warning disable xUnit1013
        public virtual void AssertEquals(int numBits, BitSet ds1, T ds2)
#pragma warning restore xUnit1013
        {
            // nextDoc
            DocIdSetIterator it2 = ds2.GetIterator();

            if (it2 == null)
            {
                Assert.AreEqual(-1, ds1.NextSetBit(0));
            }
            else
            {
                Assert.AreEqual(-1, it2.DocID);
                for (int doc = ds1.NextSetBit(0); doc != -1; doc = ds1.NextSetBit(doc + 1))
                {
                    Assert.AreEqual(doc, it2.NextDoc());
                    Assert.AreEqual(doc, it2.DocID);
                }
                Assert.AreEqual(DocIdSetIterator.NO_MORE_DOCS, it2.NextDoc());
                Assert.AreEqual(DocIdSetIterator.NO_MORE_DOCS, it2.DocID);
            }

            // nextDoc / advance
            it2 = ds2.GetIterator();
            if (it2 == null)
            {
                Assert.AreEqual(-1, ds1.NextSetBit(0));
            }
            else
            {
                for (int doc = -1; doc != DocIdSetIterator.NO_MORE_DOCS;)
                {
                    if (Random.NextBoolean())
                    {
                        doc = ds1.NextSetBit(doc + 1);
                        if (doc == -1)
                        {
                            doc = DocIdSetIterator.NO_MORE_DOCS;
                        }
                        Assert.AreEqual(doc, it2.NextDoc());
                        Assert.AreEqual(doc, it2.DocID);
                    }
                    else
                    {
                        int target = doc + 1 + Random.Next(Random.NextBoolean() ? 64 : Math.Max(numBits / 8, 1));
                        doc = ds1.NextSetBit(target);
                        if (doc == -1)
                        {
                            doc = DocIdSetIterator.NO_MORE_DOCS;
                        }
                        Assert.AreEqual(doc, it2.Advance(target));
                        Assert.AreEqual(doc, it2.DocID);
                    }
                }
            }

            // bits()
            IBits bits = ds2.Bits;

            if (bits != null)
            {
                // test consistency between bits and iterator
                it2 = ds2.GetIterator();
                for (int previousDoc = -1, doc = it2.NextDoc(); ; previousDoc = doc, doc = it2.NextDoc())
                {
                    int max = doc == DocIdSetIterator.NO_MORE_DOCS ? bits.Length : doc;
                    for (int i = previousDoc + 1; i < max; ++i)
                    {
                        Assert.AreEqual(false, bits.Get(i));
                    }
                    if (doc == DocIdSetIterator.NO_MORE_DOCS)
                    {
                        break;
                    }
                    Assert.AreEqual(true, bits.Get(doc));
                }
            }
        }