Package org.apache.lucene.facet

# Class FacetsConfig

java.lang.Object
org.apache.lucene.facet.FacetsConfig

public class FacetsConfig extends Object
Records per-dimension configuration. By default a dimension is flat, single valued and does not require count for the dimension; use the setters in this class to change these settings for each dim.

NOTE: this configuration is not saved into the index, but it's vital, and up to the application to ensure, that at search time the provided `FacetsConfig` matches what was used during indexing.

WARNING: This API is experimental and might change in incompatible ways in the next release.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static final class`
`FacetsConfig.DimConfig`
Holds the configuration for one dimension
`static enum`
`FacetsConfig.DrillDownTermsIndexing`
Drill down terms indexing option to control whether dimension and sub-path terms should be indexed.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final FacetsConfig.DimConfig`
`DEFAULT_DIM_CONFIG`
Default per-dimension configuration.
`static final String`
`DEFAULT_INDEX_FIELD_NAME`
Which Lucene field holds the drill-downs and ords (as doc values).
`static final char`
`DELIM_CHAR`
Character used to join the category path components together into a single drill down term for indexing.

## Constructor Summary

Constructors
Constructor
Description
`FacetsConfig()`
Default constructor.

## Method Summary

Modifier and Type
Method
Description
`Document`
`build(Document doc)`
Translates any added `FacetField`s into normal fields for indexing; only use this version if you did not add any taxonomy-based fields ( `FacetField` or `AssociationFacetField`).
`Document`
`build(TaxonomyWriter taxoWriter, Document doc)`
Translates any added `FacetField`s into normal fields for indexing.
`protected FacetsConfig.DimConfig`
`getDefaultDimConfig()`
Get the default configuration for new dimensions.
`FacetsConfig.DimConfig`
`getDimConfig(String dimName)`
Get the current configuration for a dimension.
`Map<String,FacetsConfig.DimConfig>`
`getDimConfigs()`
Returns map of field name to `FacetsConfig.DimConfig`.
`boolean`
`isDimConfigured(String dimName)`
Returns true if the dimension for provided name has ever been manually configured.
`static String`
`pathToString(String[] path)`
Turns a dim + path into an encoded string.
`static String`
`pathToString(String[] path, int length)`
Turns the first `length` elements of `path` into an encoded string.
`static String`
`pathToString(String dim, String... path)`
Turns a dim + path into an encoded string.
`void`
`setDrillDownTermsIndexing(String dimName, FacetsConfig.DrillDownTermsIndexing drillDownTermsIndexing)`
Specify drill down terms option on the field / dimension.
`void`
`setHierarchical(String dimName, boolean v)`
Pass `true` if this dimension is hierarchical (has depth > 1 paths).
`void`
`setIndexFieldName(String dimName, String indexFieldName)`
Specify which index field name should hold the ordinals for this dimension; this is only used by the taxonomy based facet methods.
`void`
`setMultiValued(String dimName, boolean value)`
Pass `true` if this dimension may have more than one value per document.
`void`
`setRequireDimCount(String dimName, boolean value)`
Pass `true` if at search time you require accurate counts of the dimension, i.e.
`static String[]`
`stringToPath(String s)`
Turns an encoded string (from a previous call to `pathToString(java.lang.String, java.lang.String...)`) back into the original `String[]`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEFAULT_INDEX_FIELD_NAME

public static final String DEFAULT_INDEX_FIELD_NAME
Which Lucene field holds the drill-downs and ords (as doc values).

See Also:
  - Constant Field Values

### DEFAULT_DIM_CONFIG

public static final FacetsConfig.DimConfig DEFAULT_DIM_CONFIG
Default per-dimension configuration.

### DELIM_CHAR

public static final char DELIM_CHAR
Character used to join the category path components together into a single drill down term for indexing. Applications and unit-tests can reference this for creating their own drill-down terms, or use existing APIs (for example, `pathToString(java.lang.String, java.lang.String...)`).

See Also:
  - Constant Field Values
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Constructor Details

### FacetsConfig

public FacetsConfig()
Default constructor.

## Method Details

### getDefaultDimConfig

protected FacetsConfig.DimConfig getDefaultDimConfig()
Get the default configuration for new dimensions. Useful when the dimension is not known beforehand and may need different global default settings, like `multivalue = true`.

Returns:
  The default configuration to be used for dimensions that are not yet set in the `FacetsConfig`

### getDimConfig

public FacetsConfig.DimConfig getDimConfig(String dimName)
Get the current configuration for a dimension.

### isDimConfigured

public boolean isDimConfigured(String dimName)
Returns true if the dimension for provided name has ever been manually configured. The opposite means that dimension is still valid and `DEFAULT_DIM_CONFIG` is being used for it.

### setHierarchical

public void setHierarchical(String dimName, boolean v)
Pass `true` if this dimension is hierarchical (has depth > 1 paths).

### setMultiValued

public void setMultiValued(String dimName, boolean value)
Pass `true` if this dimension may have more than one value per document.

### setRequireDimCount

public void setRequireDimCount(String dimName, boolean value)
Pass `true` if at search time you require accurate counts of the dimension, i.e. how many hits have this dimension.

### setIndexFieldName

public void setIndexFieldName(String dimName, String indexFieldName)
Specify which index field name should hold the ordinals for this dimension; this is only used by the taxonomy based facet methods.

### setDrillDownTermsIndexing

public void setDrillDownTermsIndexing(String dimName, FacetsConfig.DrillDownTermsIndexing drillDownTermsIndexing)
Specify drill down terms option on the field / dimension.

### getDimConfigs

public Map<String,FacetsConfig.DimConfig> getDimConfigs()
Returns map of field name to `FacetsConfig.DimConfig`.

### build

public Document build(Document doc) throws IOException
Translates any added `FacetField`s into normal fields for indexing; only use this version if you did not add any taxonomy-based fields ( `FacetField` or `AssociationFacetField`).

NOTE: you should add the returned document to IndexWriter, not the input one!

Throws:
  `IOException`

### build

public Document build(TaxonomyWriter taxoWriter, Document doc) throws IOException
Translates any added `FacetField`s into normal fields for indexing.

NOTE: you should add the returned document to IndexWriter, not the input one!

Throws:
  `IOException`

### pathToString

public static String pathToString(String dim, String... path)
Turns a dim + path into an encoded string.

### pathToString

public static String pathToString(String[] path)
Turns a dim + path into an encoded string.

### pathToString

public static String pathToString(String[] path, int length)
Turns the first `length` elements of `path` into an encoded string.

### stringToPath

public static String[] stringToPath(String s)
Turns an encoded string (from a previous call to `pathToString(java.lang.String, java.lang.String...)`) back into the original `String[]`.