public override DocIdSet GetDocIdSet(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; object cached = cache.Get(reader, coreKey, delCoreKey); if (cached != null) { hitCount++; if (cached is DocIdSet) { return((DocIdSet)cached); } else { return(new DocIdBitSet((System.Collections.BitArray)cached)); } } missCount++; // cache miss DocIdSet docIdSet = DocIdSetToCache(filter.GetDocIdSet(reader), reader); if (docIdSet != null) { cache.Put(coreKey, delCoreKey, docIdSet); } return(docIdSet); }
public override System.Collections.BitArray Bits(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; object cached = cache.Get(reader, coreKey, delCoreKey); if (cached != null) { if (cached is System.Collections.BitArray) { return((System.Collections.BitArray)cached); } else if (cached is DocIdBitSet) { return(((DocIdBitSet)cached).GetBitSet()); } // It would be nice to handle the DocIdSet case, but that's not really possible } System.Collections.BitArray bits = filter.Bits(reader); if (bits != null) { cache.Put(coreKey, delCoreKey, bits); } return(bits); }
private SpanFilterResult GetCachedResult(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; SpanFilterResult result = (SpanFilterResult)cache.Get(reader, coreKey, delCoreKey); if (result != null) { hitCount++; return(result); } missCount++; result = filter.BitSpans(reader); cache.Put(coreKey, delCoreKey, result); return(result); }
private SpanFilterResult GetCachedResult(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; SpanFilterResult result = (SpanFilterResult) cache.Get(reader, coreKey, delCoreKey); if (result != null) { hitCount++; return result; } missCount++; result = filter.BitSpans(reader); cache.Put(coreKey, delCoreKey, result); return result; }
public override DocIdSet GetDocIdSet(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; object cached = cache.Get(reader, coreKey, delCoreKey); if (cached != null) { hitCount++; if (cached is DocIdSet) return (DocIdSet) cached; else return new DocIdBitSet((System.Collections.BitArray) cached); } missCount++; // cache miss DocIdSet docIdSet = DocIdSetToCache(filter.GetDocIdSet(reader), reader); if (docIdSet != null) { cache.Put(coreKey, delCoreKey, docIdSet); } return docIdSet; }
public override System.Collections.BitArray Bits(IndexReader reader) { object coreKey = reader.GetFieldCacheKey(); object delCoreKey = reader.HasDeletions() ? reader.GetDeletesCacheKey() : coreKey; object cached = cache.Get(reader, coreKey, delCoreKey); if (cached != null) { if (cached is System.Collections.BitArray) { return (System.Collections.BitArray) cached; } else if (cached is DocIdBitSet) return ((DocIdBitSet) cached).GetBitSet(); // It would be nice to handle the DocIdSet case, but that's not really possible } System.Collections.BitArray bits = filter.Bits(reader); if (bits != null) { cache.Put(coreKey, delCoreKey, bits); } return bits; }