## org.apache.lucene.facet.index.streaming
Class CategoryParentsStream

    java.lang.Object
      org.apache.lucene.util.AttributeSource
          org.apache.lucene.analysis.TokenStream
              org.apache.lucene.analysis.TokenFilter
                  org.apache.lucene.facet.index.streaming.CategoryParentsStream

All Implemented Interfaces:
  Closeable

    public class CategoryParentsStream

extends org.apache.lucene.analysis.TokenFilter

This class adds parents to a `CategoryAttributesStream`. The parents are added according to the `PathPolicy` and `OrdinalPolicy` from the `FacetIndexingParams` given in the constructor.
By default, category properties are removed when creating parents of a certain category. However, it is possible to retain certain property types using `addRetainableProperty(Class)`.

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.util.AttributeSource
`org.apache.lucene.util.AttributeSource.AttributeFactory, org.apache.lucene.util.AttributeSource.State`

Field Summary
`protected CategoryAttribute` `categoryAttribute` An attribute containing all data related to the category
`protected OrdinalProperty` `ordinalProperty` A category property containing the category ordinal
`protected TaxonomyWriter` `taxonomyWriter` A `TaxonomyWriter` for adding categories and retrieving their ordinals.

Fields inherited from class org.apache.lucene.analysis.TokenFilter
`input`

Constructor Summary
`CategoryParentsStream(CategoryAttributesStream input, TaxonomyWriter taxonomyWriter, FacetIndexingParams indexingParams)` Constructor.

Method Summary
`void` `addRetainableProperty(Class<? extends CategoryProperty> toRetain)` Add a `CategoryProperty` class which is retained when creating parent tokens.
`protected void` `clearCategoryProperties()` Clear the properties of the current `CategoryAttribute` attribute before setting the parent attributes.
`boolean` `incrementToken()`

Methods inherited from class org.apache.lucene.analysis.TokenFilter
`close, end, reset`

Methods inherited from class org.apache.lucene.util.AttributeSource
`addAttribute, addAttributeImpl, captureState, clearAttributes, cloneAttributes, copyTo, equals, getAttribute, getAttributeClassesIterator, getAttributeFactory, getAttributeImplsIterator, hasAttribute, hasAttributes, hashCode, reflectAsString, reflectWith, restoreState, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### taxonomyWriter

    protected TaxonomyWriter taxonomyWriter

  A `TaxonomyWriter` for adding categories and retrieving their ordinals.

### categoryAttribute

    protected CategoryAttribute categoryAttribute

  An attribute containing all data related to the category

### ordinalProperty

    protected OrdinalProperty ordinalProperty

  A category property containing the category ordinal

Constructor Detail

### CategoryParentsStream

    public CategoryParentsStream(CategoryAttributesStream input,
                                 TaxonomyWriter taxonomyWriter,
                                 FacetIndexingParams indexingParams)

  Constructor.

  Parameters:
    `input` - The input stream to handle, must be derived from `CategoryAttributesStream`.
    `taxonomyWriter` - The taxonomy writer to use for adding categories and retrieving their ordinals.
    `indexingParams` - The indexing params used for filtering parents.

Method Detail

### incrementToken

    public final boolean incrementToken()
                                 throws IOException

  Specified by:
    `incrementToken` in class `org.apache.lucene.analysis.TokenStream`
  Throws:
    `IOException`

### clearCategoryProperties

    protected void clearCategoryProperties()

  Clear the properties of the current `CategoryAttribute` attribute before setting the parent attributes.
  It is possible to retain properties of certain types the parent tokens, using `addRetainableProperty(Class)`.

### addRetainableProperty

    public void addRetainableProperty(Class<? extends CategoryProperty> toRetain)

  Add a `CategoryProperty` class which is retained when creating parent tokens.

  Parameters:
    `toRetain` - The property class to retain.