Package org.apache.lucene.facet.taxonomy
Class OrdinalMappingLeafReader
- java.lang.Object
-
- org.apache.lucene.index.IndexReader
-
- org.apache.lucene.index.LeafReader
-
- org.apache.lucene.index.FilterLeafReader
-
- org.apache.lucene.facet.taxonomy.OrdinalMappingLeafReader
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class OrdinalMappingLeafReader extends FilterLeafReader
AFilterLeafReader
for updating facets ordinal references, based on an ordinal map. You should use this code in conjunction with merging taxonomies - after you merge taxonomies, you receive anDirectoryTaxonomyWriter.OrdinalMap
which maps the 'old' ordinals to the 'new' ones. You can use that map to re-map the doc values which contain the facets information (ordinals) either before or while merging the indexes.For re-mapping the ordinals during index merge, do the following:
// merge the old taxonomy with the new one. OrdinalMap map = new MemoryOrdinalMap(); DirectoryTaxonomyWriter.addTaxonomy(srcTaxoDir, map); int[] ordmap = map.getMap(); // Add the index and re-map ordinals on the go DirectoryReader reader = DirectoryReader.open(oldDir); IndexWriterConfig conf = new IndexWriterConfig(VER, ANALYZER); IndexWriter writer = new IndexWriter(newDir, conf); List<LeafReaderContext> leaves = reader.leaves(); LeafReader wrappedLeaves[] = new LeafReader[leaves.size()]; for (int i = 0; i < leaves.size(); i++) { wrappedLeaves[i] = new OrdinalMappingLeafReader(leaves.get(i).reader(), ordmap); } writer.addIndexes(new MultiReader(wrappedLeaves)); writer.commit();
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.index.FilterLeafReader
FilterLeafReader.FilterFields, FilterLeafReader.FilterPostingsEnum, FilterLeafReader.FilterTerms, FilterLeafReader.FilterTermsEnum
-
Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.CacheHelper, IndexReader.CacheKey, IndexReader.ClosedListener
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.index.FilterLeafReader
in
-
-
Constructor Summary
Constructors Constructor Description OrdinalMappingLeafReader(LeafReader in, int[] ordinalMap, FacetsConfig srcConfig)
Wraps an LeafReader, mapping ordinals according to the ordinalMap, using the providedFacetsConfig
which was used to build the wrapped reader.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected BytesRef
encode(IntsRef ordinals)
Expert: encodes category ordinals into a BytesRef.BinaryDocValues
getBinaryDocValues(String field)
IndexReader.CacheHelper
getCoreCacheHelper()
protected OrdinalsReader
getOrdinalsReader(String field)
Expert: override in case you used custom encoding for the categories under this field.IndexReader.CacheHelper
getReaderCacheHelper()
-
Methods inherited from class org.apache.lucene.index.FilterLeafReader
checkIntegrity, doClose, document, getDelegate, getFieldInfos, getLiveDocs, getMetaData, getNormValues, getNumericDocValues, getPointValues, getSortedDocValues, getSortedNumericDocValues, getSortedSetDocValues, getTermVectors, maxDoc, numDocs, terms, toString, unwrap
-
Methods inherited from class org.apache.lucene.index.LeafReader
docFreq, getContext, getDocCount, getSumDocFreq, getSumTotalTermFreq, postings, postings, totalTermFreq
-
Methods inherited from class org.apache.lucene.index.IndexReader
close, decRef, document, document, ensureOpen, equals, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, numDeletedDocs, registerParentReader, tryIncRef
-
-
-
-
Constructor Detail
-
OrdinalMappingLeafReader
public OrdinalMappingLeafReader(LeafReader in, int[] ordinalMap, FacetsConfig srcConfig)
Wraps an LeafReader, mapping ordinals according to the ordinalMap, using the providedFacetsConfig
which was used to build the wrapped reader.
-
-
Method Detail
-
encode
protected BytesRef encode(IntsRef ordinals)
Expert: encodes category ordinals into a BytesRef. Override in case you use custom encoding, other than the default done by FacetsConfig.
-
getOrdinalsReader
protected OrdinalsReader getOrdinalsReader(String field)
Expert: override in case you used custom encoding for the categories under this field.
-
getBinaryDocValues
public BinaryDocValues getBinaryDocValues(String field) throws IOException
- Overrides:
getBinaryDocValues
in classFilterLeafReader
- Throws:
IOException
-
getCoreCacheHelper
public IndexReader.CacheHelper getCoreCacheHelper()
- Specified by:
getCoreCacheHelper
in classLeafReader
-
getReaderCacheHelper
public IndexReader.CacheHelper getReaderCacheHelper()
- Specified by:
getReaderCacheHelper
in classIndexReader
-
-