public class DirectoryTaxonomyReader extends TaxonomyReader
TaxonomyReader which retrieves stored taxonomy information from a
Directory.
Reading from the on-disk index on every method call is too slow, so this implementation employs caching: Some methods cache recent requests and their results, while other methods prefetch all the data into memory and then provide answers directly from in-memory tables. See the documentation of individual methods for comments on their performance.
TaxonomyReader.ChildrenIteratorINVALID_ORDINAL, ROOT_ORDINAL| Constructor and Description |
|---|
DirectoryTaxonomyReader(Directory directory)
Open for reading a taxonomy stored in a given
Directory. |
DirectoryTaxonomyReader(DirectoryTaxonomyWriter taxoWriter)
Opens a
DirectoryTaxonomyReader over the given
DirectoryTaxonomyWriter (for NRT). |
| Modifier and Type | Method and Description |
|---|---|
protected void |
doClose()
performs the actual task of closing the resources that are used by the
taxonomy reader.
|
protected DirectoryTaxonomyReader |
doOpenIfChanged()
Implements the opening of a new
DirectoryTaxonomyReader instance if
the taxonomy has changed. |
Map<String,String> |
getCommitUserData()
Retrieve user committed data.
|
int |
getOrdinal(FacetLabel cp)
Returns the ordinal of the category given as a path.
|
ParallelTaxonomyArrays |
getParallelTaxonomyArrays()
Returns a
ParallelTaxonomyArrays object which can be used to
efficiently traverse the taxonomy tree. |
FacetLabel |
getPath(int ordinal)
Returns the path name of the category with the given ordinal.
|
int |
getSize()
Returns the number of categories in the taxonomy.
|
protected DirectoryReader |
openIndexReader(Directory directory)
Open the
DirectoryReader from this Directory. |
protected DirectoryReader |
openIndexReader(IndexWriter writer)
Open the
DirectoryReader from this IndexWriter. |
void |
setCacheSize(int size)
setCacheSize controls the maximum allowed size of each of the caches
used by
getPath(int) and getOrdinal(FacetLabel). |
String |
toString(int max)
Returns ordinal -> label mapping, up to the provided
max ordinal or number of ordinals, whichever is
smaller.
|
close, decRef, ensureOpen, getChildren, getOrdinal, getRefCount, incRef, openIfChanged, tryIncRefpublic DirectoryTaxonomyReader(Directory directory) throws IOException
Directory.directory - The Directory in which the taxonomy resides.CorruptIndexException - if the Taxonomy is corrupt.IOException - if another error occurred.public DirectoryTaxonomyReader(DirectoryTaxonomyWriter taxoWriter) throws IOException
DirectoryTaxonomyReader over the given
DirectoryTaxonomyWriter (for NRT).taxoWriter - The DirectoryTaxonomyWriter from which to obtain newly
added categories, in real-time.IOExceptionprotected void doClose()
throws IOException
TaxonomyReaderdoClose in class TaxonomyReaderIOExceptionprotected DirectoryTaxonomyReader doOpenIfChanged() throws IOException
DirectoryTaxonomyReader instance if
the taxonomy has changed.
NOTE: the returned DirectoryTaxonomyReader shares the
ordinal and category caches with this reader. This is not expected to cause
any issues, unless the two instances continue to live. The reader
guarantees that the two instances cannot affect each other in terms of
correctness of the caches, however if the size of the cache is changed
through setCacheSize(int), it will affect both reader instances.
doOpenIfChanged in class TaxonomyReaderIOExceptionTaxonomyReader.openIfChanged(TaxonomyReader)protected DirectoryReader openIndexReader(Directory directory) throws IOException
DirectoryReader from this Directory.IOExceptionprotected DirectoryReader openIndexReader(IndexWriter writer) throws IOException
DirectoryReader from this IndexWriter.IOExceptionpublic ParallelTaxonomyArrays getParallelTaxonomyArrays() throws IOException
TaxonomyReaderParallelTaxonomyArrays object which can be used to
efficiently traverse the taxonomy tree.getParallelTaxonomyArrays in class TaxonomyReaderIOExceptionpublic Map<String,String> getCommitUserData() throws IOException
TaxonomyReadergetCommitUserData in class TaxonomyReaderIOExceptionTaxonomyWriter.setCommitData(Map)public int getOrdinal(FacetLabel cp) throws IOException
TaxonomyReadergetOrdinal in class TaxonomyReaderTaxonomyReader.INVALID_ORDINAL if the category
wasn't foun.IOExceptionpublic FacetLabel getPath(int ordinal) throws IOException
TaxonomyReadergetPath in class TaxonomyReaderIOExceptionpublic int getSize()
TaxonomyReadergetSize in class TaxonomyReaderpublic void setCacheSize(int size)
getPath(int) and getOrdinal(FacetLabel).
Currently, if the given size is smaller than the current size of a cache, it will not shrink, and rather we be limited to its current size.
size - the new maximum cache size, in number of entries.public String toString(int max)
Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.