# Package org.apache.lucene.facet

Faceted search.

See: Description

- Class Summary
  Class | Description
  --- | ---
  DrillDownQuery | A `Query` for drill-down over facet categories.
  DrillSideways | Computes drill down and sideways counts for the provided `DrillDownQuery`.
  DrillSideways.ConcurrentDrillSidewaysResult<R> | Result of a concurrent drill sideways search, including the `Facets` and `TopDocs`.
  DrillSideways.DrillSidewaysResult | Result of a drill sideways search, including the `Facets` and `TopDocs`.
  FacetField | Add an instance of this to your `Document` for every facet label.
  FacetQuery | A term `Query` over a `FacetField`.
  FacetResult | Counts or aggregates for a single dimension.
  Facets | Common base class for all facets implementations.
  FacetsCollector | Collects hits for subsequent faceting.
  FacetsCollector.MatchingDocs | Holds the documents that were matched in the `LeafReaderContext`.
  FacetsCollectorManager | A `CollectorManager` implementation which produces FacetsCollector and produces a merged FacetsCollector.
  FacetsConfig | Records per-dimension configuration.
  FacetsConfig.DimConfig | Holds the configuration for one dimension
  LabelAndValue | Single label and its value, usually contained in a `FacetResult`.
  LongValueFacetCounts | `Facets` implementation that computes counts for all unique long values, more efficiently counting small values (0-1023) using an int array, and switching to a `HashMap` for values above 1023.
  MultiFacetQuery | A multi-terms `Query` over a `FacetField`.
  MultiFacets | Maps specified dims to provided Facets impls; else, uses the default Facets impl.
  RandomSamplingFacetsCollector | Collects hits for subsequent faceting, using sampling if needed.
  StringDocValuesReaderState | Stores an `OrdinalMap` created for a specific `IndexReader` (`reader`) + `field`.
  StringValueFacetCounts | Compute facet counts from a previously indexed `SortedSetDocValues` or `SortedDocValues` field.
  TopOrdAndFloatQueue | Keeps highest results, first by largest float value, then tie break by smallest ord.
  TopOrdAndFloatQueue.OrdAndValue | Holds a single entry.
  TopOrdAndIntQueue | Keeps highest results, first by largest int value, then tie break by smallest ord.
  TopOrdAndIntQueue.OrdAndValue | Holds a single entry.

- Enum Summary
  Enum | Description
  --- | ---
  FacetsConfig.DrillDownTermsIndexing | Drill down terms indexing option to control whether dimension and sub-path terms should be indexed.

## Package org.apache.lucene.facet Description

Faceted search.

This module provides multiple methods for computing facet counts and value aggregations:

- Taxonomy-based methods rely on a separate taxonomy index to map hierarchical facet paths to global int ordinals for fast counting at search time; these methods can compute counts ((`FastTaxonomyFacetCounts`, `TaxonomyFacetCounts`) aggregate long or double values `TaxonomyFacetSumIntAssociations`, `TaxonomyFacetSumFloatAssociations`, `TaxonomyFacetSumValueSource`. Add `FacetField` or `AssociationFacetField` to your documents at index time to use taxonomy-based methods.
- Sorted-set doc values method does not require a separate taxonomy index, and computes counts based on sorted set doc values fields (`SortedSetDocValuesFacetCounts`). Add `SortedSetDocValuesFacetField` to your documents at index time to use sorted set facet counts.
- Range faceting `LongRangeFacetCounts`, `DoubleRangeFacetCounts` compute counts for a dynamic numeric range from a provided `LongValuesSource` (previously indexed numeric field, or a dynamic expression such as distance).

At search time you first run your search, but pass a `FacetsCollector` to gather all hits (and optionally, scores for each hit). Then, instantiate whichever facet methods you'd like to use to compute aggregates. Finally, all methods implement a common `Facets` base API that you use to obtain specific facet counts.

The various `FacetsCollector.search(org.apache.lucene.search.IndexSearcher, org.apache.lucene.search.Query, int, org.apache.lucene.search.Collector)` utility methods are useful for doing an "ordinary" search (sorting by score, or by a specified Sort) but also collecting into a `FacetsCollector` for subsequent faceting.

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