Package org.apache.solr.uninverting
Class FieldCacheImpl
- java.lang.Object
-
- org.apache.solr.uninverting.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FieldCacheImpl.BinaryDocValuesImpl
static class
FieldCacheImpl.LongsFromArray
static class
FieldCacheImpl.SortedDocValuesImpl
-
Nested classes/interfaces inherited from interface org.apache.solr.uninverting.FieldCache
FieldCache.CacheEntry, FieldCache.CreationPlaceholder, FieldCache.Parser, FieldCache.PointParser
-
-
Field Summary
-
Fields inherited from interface org.apache.solr.uninverting.FieldCache
DEFAULT, DOUBLE_POINT_PARSER, FLOAT_POINT_PARSER, INT_POINT_PARSER, INT32_TERM_PREFIX, INT64_TERM_PREFIX, LEGACY_DOUBLE_PARSER, LEGACY_FLOAT_PARSER, LEGACY_INT_PARSER, LEGACY_LONG_PARSER, LONG_POINT_PARSER
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FieldCache.CacheEntry[]
getCacheEntries()
EXPERT: Generates an array of CacheEntry objects representing all items currently in the FieldCache.org.apache.lucene.util.Bits
getDocsWithField(org.apache.lucene.index.LeafReader reader, String field, FieldCache.Parser parser)
Checks the internal cache for an appropriate entry, and if none is found, reads the terms/points infield
and returns a bit set at the size ofreader.maxDoc()
, with turned on bits for each docid that does have a value for this field.org.apache.lucene.index.SortedSetDocValues
getDocTermOrds(org.apache.lucene.index.LeafReader reader, String field, org.apache.lucene.util.BytesRef prefix)
Checks the internal cache for an appropriate entry, and if none is found, reads the term values infield
and returns aDocTermOrds
instance, providing a method to retrieve the terms (as ords) per document.org.apache.lucene.index.NumericDocValues
getNumerics(org.apache.lucene.index.LeafReader reader, String field, FieldCache.Parser parser)
Returns aNumericDocValues
over the values found in documents in the given field.org.apache.lucene.index.BinaryDocValues
getTerms(org.apache.lucene.index.LeafReader reader, String field)
Checks the internal cache for an appropriate entry, and if none is found, reads the term values infield
and returns aBinaryDocValues
instance, providing a method to retrieve the term (as a BytesRef) per document.org.apache.lucene.index.BinaryDocValues
getTerms(org.apache.lucene.index.LeafReader reader, String field, float acceptableOverheadRatio)
Expert: just likeFieldCache.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").org.apache.lucene.index.SortedDocValues
getTermsIndex(org.apache.lucene.index.LeafReader reader, String field)
Checks the internal cache for an appropriate entry, and if none is found, reads the term values infield
and returns aSortedDocValues
instance, providing methods to retrieve sort ordinals and terms (as a ByteRef) per document.org.apache.lucene.index.SortedDocValues
getTermsIndex(org.apache.lucene.index.LeafReader reader, String field, float acceptableOverheadRatio)
Expert: just likeFieldCache.getTermsIndex(org.apache.lucene.index.LeafReader,String)
, but you can specify whether more RAM should be consumed in exchange for faster lookups (default is "true").void
purgeAllCaches()
EXPERT: Instructs the FieldCache to forcibly expunge all entries from the underlying caches.void
purgeByCacheKey(org.apache.lucene.index.IndexReader.CacheKey coreCacheKey)
Expert: drops all cache entries associated with this readerIndexReader.CacheHelper.getKey()
.
-
-
-
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 interfaceFieldCache
-
purgeByCacheKey
public void purgeByCacheKey(org.apache.lucene.index.IndexReader.CacheKey coreCacheKey)
Description copied from interface:FieldCache
Expert: drops all cache entries associated with this readerIndexReader.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 interfaceFieldCache
-
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 interfaceFieldCache
-
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 infield
and returns a bit set at the size ofreader.maxDoc()
, with turned on bits for each docid that does have a value for this field.- Specified by:
getDocsWithField
in interfaceFieldCache
parser
- May benull
if coming from the inverted index, otherwise can be aFieldCache.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 aNumericDocValues
over the values found in documents in the given field. If the field was indexed asNumericDocValuesField
, it simply usesLeafReader.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 infield
as longs and returns an array of sizereader.maxDoc()
of the value each document has in the given field.- Specified by:
getNumerics
in interfaceFieldCache
- Parameters:
reader
- Used to get field values.field
- Which field contains the longs.parser
- Computes long for string values. May benull
if the requested field was indexed asNumericDocValuesField
orLegacyLongField
.- 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 infield
and returns aSortedDocValues
instance, providing methods to retrieve sort ordinals and terms (as a ByteRef) per document.- Specified by:
getTermsIndex
in interfaceFieldCache
- 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.
-
getTermsIndex
public org.apache.lucene.index.SortedDocValues getTermsIndex(org.apache.lucene.index.LeafReader reader, String field, float acceptableOverheadRatio) throws IOException
Description copied from interface:FieldCache
Expert: just likeFieldCache.getTermsIndex(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:
getTermsIndex
in interfaceFieldCache
- Throws:
IOException
-
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 infield
and returns aBinaryDocValues
instance, providing a method to retrieve the term (as a BytesRef) per document.- Specified by:
getTerms
in interfaceFieldCache
- 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 likeFieldCache.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 interfaceFieldCache
- 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 infield
and returns aDocTermOrds
instance, providing a method to retrieve the terms (as ords) per document.- Specified by:
getDocTermOrds
in interfaceFieldCache
- Parameters:
reader
- Used to build aDocTermOrds
instancefield
- Which field contains the strings.prefix
- prefix for a subset of the terms which should be uninverted. Can be null orFieldCache.INT32_TERM_PREFIX
orFieldCache.INT64_TERM_PREFIX
- Returns:
- a
DocTermOrds
instance - Throws:
IOException
- If any error occurs.
-
-