public LongDocValuesAnonymousInnerClassHelper(LongFieldSource outerInstance, LongFieldSource @this, FieldCache.Longs arr, Bits valid) : base(@this) { this.outerInstance = outerInstance; this.arr = arr; this.valid = valid; }
public override void Run() { try { //NumericDocValues ndv = ar.GetNumericDocValues("number"); FieldCache.Longs ndv = FieldCache.DEFAULT.GetLongs(Ar, "number", false); //BinaryDocValues bdv = ar.GetBinaryDocValues("bytes"); BinaryDocValues bdv = FieldCache.DEFAULT.GetTerms(Ar, "bytes", false); SortedDocValues sdv = FieldCache.DEFAULT.GetTermsIndex(Ar, "sorted"); StartingGun.Wait(); int iters = AtLeast(1000); BytesRef scratch = new BytesRef(); BytesRef scratch2 = new BytesRef(); for (int iter = 0; iter < iters; iter++) { int docID = ThreadRandom.Next(NumDocs); switch (ThreadRandom.Next(6)) { case 0: Assert.AreEqual((long)(sbyte)Numbers[docID], FieldCache.DEFAULT.GetBytes(Ar, "number", false).Get(docID)); break; case 1: Assert.AreEqual((long)(short)Numbers[docID], FieldCache.DEFAULT.GetShorts(Ar, "number", false).Get(docID)); break; case 2: Assert.AreEqual((long)(int)Numbers[docID], FieldCache.DEFAULT.GetInts(Ar, "number", false).Get(docID)); break; case 3: Assert.AreEqual((long)Numbers[docID], FieldCache.DEFAULT.GetLongs(Ar, "number", false).Get(docID)); break; case 4: Assert.AreEqual(Number.IntBitsToFloat((int)Numbers[docID]), FieldCache.DEFAULT.GetFloats(Ar, "number", false).Get(docID), 0.0f); break; case 5: Assert.AreEqual(BitConverter.Int64BitsToDouble((long)Numbers[docID]), FieldCache.DEFAULT.GetDoubles(Ar, "number", false).Get(docID), 0.0); break; } bdv.Get(docID, scratch); Assert.AreEqual(Binary[docID], scratch); // Cannot share a single scratch against two "sources": sdv.Get(docID, scratch2); Assert.AreEqual(Sorted[docID], scratch2); } } catch (Exception e) { throw new Exception(e.Message, e); } }
public virtual void TestNumericFields() { foreach (string name in OldNames) { Directory dir = OldIndexDirs[name]; IndexReader reader = DirectoryReader.Open(dir); IndexSearcher searcher = NewSearcher(reader); for (int id = 10; id < 15; id++) { ScoreDoc[] hits = searcher.Search(NumericRangeQuery.NewIntRange("trieInt", 4, Convert.ToInt32(id), Convert.ToInt32(id), true, true), 100).ScoreDocs; Assert.AreEqual(1, hits.Length, "wrong number of hits"); Document d = searcher.Doc(hits[0].Doc); Assert.AreEqual(Convert.ToString(id), d.Get("id")); hits = searcher.Search(NumericRangeQuery.NewLongRange("trieLong", 4, Convert.ToInt64(id), Convert.ToInt64(id), true, true), 100).ScoreDocs; Assert.AreEqual(1, hits.Length, "wrong number of hits"); d = searcher.Doc(hits[0].Doc); Assert.AreEqual(Convert.ToString(id), d.Get("id")); } // check that also lower-precision fields are ok ScoreDoc[] hits_ = searcher.Search(NumericRangeQuery.NewIntRange("trieInt", 4, int.MinValue, int.MaxValue, false, false), 100).ScoreDocs; Assert.AreEqual(34, hits_.Length, "wrong number of hits"); hits_ = searcher.Search(NumericRangeQuery.NewLongRange("trieLong", 4, long.MinValue, long.MaxValue, false, false), 100).ScoreDocs; Assert.AreEqual(34, hits_.Length, "wrong number of hits"); // check decoding into field cache FieldCache.Ints fci = FieldCache.DEFAULT.GetInts(SlowCompositeReaderWrapper.Wrap(searcher.IndexReader), "trieInt", false); int maxDoc = searcher.IndexReader.MaxDoc; for (int doc = 0; doc < maxDoc; doc++) { int val = fci.Get(doc); Assert.IsTrue(val >= 0 && val < 35, "value in id bounds"); } FieldCache.Longs fcl = FieldCache.DEFAULT.GetLongs(SlowCompositeReaderWrapper.Wrap(searcher.IndexReader), "trieLong", false); for (int doc = 0; doc < maxDoc; doc++) { long val = fcl.Get(doc); Assert.IsTrue(val >= 0L && val < 35L, "value in id bounds"); } reader.Dispose(); } }