Class FieldCacheImpl

  • All Implemented Interfaces:
    FieldCache

    public class FieldCacheImpl
    extends Object
    implements FieldCache
    Expert: The default cache implementation, storing all values in memory. A WeakHashMap is used for storage.
    NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
    • Method Detail

      • purgeAllCaches

        public void purgeAllCaches()
        Description copied from interface: FieldCache

        EXPERT: Instructs the FieldCache to forcibly expunge all entries from the underlying caches. This is intended only to be used for test methods as a way to ensure a known base state of the Cache (with out needing to rely on GC to free WeakReferences). It should not be relied on for "Cache maintenance" in general application code.

        Specified by:
        purgeAllCaches in interface FieldCache
      • purgeByCacheKey

        public void purgeByCacheKey​(org.apache.lucene.index.IndexReader.CacheKey coreCacheKey)
        Description copied from interface: FieldCache
        Expert: drops all cache entries associated with this reader IndexReader.CacheHelper.getKey(). NOTE: this cache key must precisely match the reader that the cache entry is keyed on. If you pass a top-level reader, it usually will have no effect as Lucene now caches at the segment reader level.
        Specified by:
        purgeByCacheKey in interface FieldCache
      • getCacheEntries

        public FieldCache.CacheEntry[] getCacheEntries()
        Description copied from interface: FieldCache
        EXPERT: Generates an array of CacheEntry objects representing all items currently in the FieldCache.

        NOTE: These CacheEntry objects maintain a strong reference to the Cached Values. Maintaining references to a CacheEntry the AtomicIndexReader associated with it has garbage collected will prevent the Value itself from being garbage collected when the Cache drops the WeakReference.

        Specified by:
        getCacheEntries in interface FieldCache
      • getDocsWithField

        public org.apache.lucene.util.Bits getDocsWithField​(org.apache.lucene.index.LeafReader reader,
                                                            String field,
                                                            FieldCache.Parser parser)
                                                     throws IOException
        Description copied from interface: FieldCache
        Checks the internal cache for an appropriate entry, and if none is found, reads the terms/points in field and returns a bit set at the size of reader.maxDoc(), with turned on bits for each docid that does have a value for this field.
        Specified by:
        getDocsWithField in interface FieldCache
        parser - May be null if coming from the inverted index, otherwise can be a FieldCache.PointParser to compute from point values.
        Throws:
        IOException
      • getNumerics

        public org.apache.lucene.index.NumericDocValues getNumerics​(org.apache.lucene.index.LeafReader reader,
                                                                    String field,
                                                                    FieldCache.Parser parser)
                                                             throws IOException
        Description copied from interface: FieldCache
        Returns a NumericDocValues over the values found in documents in the given field. If the field was indexed as NumericDocValuesField, it simply uses LeafReader.getNumericDocValues(String) to read the values. Otherwise, it checks the internal cache for an appropriate entry, and if none is found, reads the terms/points in field as longs and returns an array of size reader.maxDoc() of the value each document has in the given field.
        Specified by:
        getNumerics in interface FieldCache
        Parameters:
        reader - Used to get field values.
        field - Which field contains the longs.
        parser - Computes long for string values. May be null if the requested field was indexed as NumericDocValuesField or LegacyLongField.
        Returns:
        The values in the given field for each document.
        Throws:
        IOException - If any error occurs.
      • getTermsIndex

        public org.apache.lucene.index.SortedDocValues getTermsIndex​(org.apache.lucene.index.LeafReader reader,
                                                                     String field)
                                                              throws IOException
        Description copied from interface: FieldCache
        Checks the internal cache for an appropriate entry, and if none is found, reads the term values in field and returns a SortedDocValues instance, providing methods to retrieve sort ordinals and terms (as a ByteRef) per document.
        Specified by:
        getTermsIndex in interface FieldCache
        Parameters:
        reader - Used to get field values.
        field - Which field contains the strings.
        Returns:
        The values in the given field for each document.
        Throws:
        IOException - If any error occurs.
      • getTerms

        public org.apache.lucene.index.BinaryDocValues getTerms​(org.apache.lucene.index.LeafReader reader,
                                                                String field)
                                                         throws IOException
        Description copied from interface: FieldCache
        Checks the internal cache for an appropriate entry, and if none is found, reads the term values in field and returns a BinaryDocValues instance, providing a method to retrieve the term (as a BytesRef) per document.
        Specified by:
        getTerms in interface FieldCache
        Parameters:
        reader - Used to get field values.
        field - Which field contains the strings.
        Returns:
        The values in the given field for each document.
        Throws:
        IOException - If any error occurs.
      • getTerms

        public org.apache.lucene.index.BinaryDocValues getTerms​(org.apache.lucene.index.LeafReader reader,
                                                                String field,
                                                                float acceptableOverheadRatio)
                                                         throws IOException
        Description copied from interface: FieldCache
        Expert: just like FieldCache.getTerms(org.apache.lucene.index.LeafReader,String), but you can specify whether more RAM should be consumed in exchange for faster lookups (default is "true"). Note that the first call for a given reader and field "wins", subsequent calls will share the same cache entry.
        Specified by:
        getTerms in interface FieldCache
        Throws:
        IOException
      • getDocTermOrds

        public org.apache.lucene.index.SortedSetDocValues getDocTermOrds​(org.apache.lucene.index.LeafReader reader,
                                                                         String field,
                                                                         org.apache.lucene.util.BytesRef prefix)
                                                                  throws IOException
        Description copied from interface: FieldCache
        Checks the internal cache for an appropriate entry, and if none is found, reads the term values in field and returns a DocTermOrds instance, providing a method to retrieve the terms (as ords) per document.
        Specified by:
        getDocTermOrds in interface FieldCache
        Parameters:
        reader - Used to build a DocTermOrds instance
        field - Which field contains the strings.
        prefix - prefix for a subset of the terms which should be uninverted. Can be null or FieldCache.INT32_TERM_PREFIX or FieldCache.INT64_TERM_PREFIX
        Returns:
        a DocTermOrds instance
        Throws:
        IOException - If any error occurs.