org.apache.lucene.facet.util
Class OrdinalMappingAtomicReader

java.lang.Object
  extended by org.apache.lucene.index.IndexReader
      extended by org.apache.lucene.index.AtomicReader
          extended by org.apache.lucene.index.FilterAtomicReader
              extended by org.apache.lucene.facet.util.OrdinalMappingAtomicReader
All Implemented Interfaces:
Closeable

public class OrdinalMappingAtomicReader
extends FilterAtomicReader

A FilterAtomicReader 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 an DirectoryTaxonomyWriter.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<AtomicReaderContext> leaves = reader.leaves();
   AtomicReader wrappedLeaves[] = new AtomicReader[leaves.size()];
   for (int i = 0; i < leaves.size(); i++) {
     wrappedLeaves[i] = new OrdinalMappingAtomicReader(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.FilterAtomicReader
FilterAtomicReader.FilterDocsAndPositionsEnum, FilterAtomicReader.FilterDocsEnum, FilterAtomicReader.FilterFields, FilterAtomicReader.FilterTerms, FilterAtomicReader.FilterTermsEnum
 
Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.ReaderClosedListener
 
Field Summary
 
Fields inherited from class org.apache.lucene.index.FilterAtomicReader
in
 
Constructor Summary
OrdinalMappingAtomicReader(AtomicReader in, int[] ordinalMap)
          Wraps an AtomicReader, mapping ordinals according to the ordinalMap.
OrdinalMappingAtomicReader(AtomicReader in, int[] ordinalMap, FacetIndexingParams indexingParams)
          Wraps an AtomicReader, mapping ordinals according to the ordinalMap, using the provided indexingParams.
 
Method Summary
 BinaryDocValues getBinaryDocValues(String field)
           
 
Methods inherited from class org.apache.lucene.index.FilterAtomicReader
doClose, document, fields, getCombinedCoreAndDeletesKey, getCoreCacheKey, getFieldInfos, getLiveDocs, getNormValues, getNumericDocValues, getSortedDocValues, getSortedSetDocValues, getTermVectors, hasDeletions, maxDoc, numDocs, toString
 
Methods inherited from class org.apache.lucene.index.AtomicReader
docFreq, getContext, hasNorms, termDocsEnum, termPositionsEnum, terms, totalTermFreq
 
Methods inherited from class org.apache.lucene.index.IndexReader
addReaderClosedListener, close, decRef, document, document, ensureOpen, equals, getRefCount, getTermVector, hashCode, incRef, leaves, numDeletedDocs, open, open, open, open, open, registerParentReader, removeReaderClosedListener, tryIncRef
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OrdinalMappingAtomicReader

public OrdinalMappingAtomicReader(AtomicReader in,
                                  int[] ordinalMap)
Wraps an AtomicReader, mapping ordinals according to the ordinalMap. Calls OrdinalMappingAtomicReader(in, ordinalMap, new DefaultFacetIndexingParams())


OrdinalMappingAtomicReader

public OrdinalMappingAtomicReader(AtomicReader in,
                                  int[] ordinalMap,
                                  FacetIndexingParams indexingParams)
Wraps an AtomicReader, mapping ordinals according to the ordinalMap, using the provided indexingParams.

Method Detail

getBinaryDocValues

public BinaryDocValues getBinaryDocValues(String field)
                                   throws IOException
Overrides:
getBinaryDocValues in class FilterAtomicReader
Throws:
IOException


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.