public override DocIdSet GetDocIdSet(AtomicReaderContext context, IBits acceptDocs)
{
var reader = context.AtomicReader;
object key = reader.CoreCacheKey;
if (_cache.TryGetValue(key, out DocIdSet docIdSet) && docIdSet != null)
{
hitCount++;
}
else
{
missCount++;
docIdSet = DocIdSetToCache(_filter.GetDocIdSet(context, null), reader);
if (Debugging.AssertsEnabled)
{
Debugging.Assert(docIdSet.IsCacheable);
}
#if FEATURE_CONDITIONALWEAKTABLE_ADDORUPDATE
_cache.AddOrUpdate(key, docIdSet);
#else
_cache[key] = docIdSet;
#endif
}
return(docIdSet == EMPTY_DOCIDSET ? null : BitsFilteredDocIdSet.Wrap(docIdSet, acceptDocs));
}