コード例 #1
0
        private SpanFilterResult GetCachedResult(IndexReader reader)
        {
            object coreKey    = reader.FieldCacheKey;
            object delCoreKey = reader.HasDeletions ? reader.DeletesCacheKey : coreKey;

            SpanFilterResult result = cache.Get(reader, coreKey, delCoreKey);

            if (result != null)
            {
                hitCount++;
                return(result);
            }

            missCount++;
            result = filter.BitSpans(reader);

            cache.Put(coreKey, delCoreKey, result);
            return(result);
        }
コード例 #2
0
        private SpanFilterResult GetCachedResult(IndexReader reader)
        {
            SpanFilterResult result = null;

            if (cache == null)
            {
                cache = new SupportClass.WeakHashTable();
            }

            lock (cache.SyncRoot)
            {
                // check cache
                result = (SpanFilterResult)cache[reader];
                if (result == null)
                {
                    result        = filter.BitSpans(reader);
                    cache[reader] = result;
                }
            }
            return(result);
        }
コード例 #3
0
        private SpanFilterResult GetCachedResult(IndexReader reader)
        {
            SpanFilterResult result = null;

            if (cache == null)
            {
                cache = new System.Collections.Hashtable();
            }

            lock (cache.SyncRoot)
            {
                // check cache
                result = (SpanFilterResult)cache[reader];
                if (result == null)
                {
                    result        = filter.BitSpans(reader);
                    cache[reader] = result;
                }
            }
            return(result);
        }