Package org.apache.lucene.facet
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 valuesTaxonomyFacetSumIntAssociations
,TaxonomyFacetSumFloatAssociations
,TaxonomyFacetSumValueSource
. AddFacetField
orAssociationFacetField
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
). AddSortedSetDocValuesFacetField
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 providedLongValuesSource
(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.
-
Class Summary Class Description DrillDownQuery AQuery
for drill-down over facet categories.DrillSideways Computes drill down and sideways counts for the providedDrillDownQuery
.DrillSideways.ConcurrentDrillSidewaysResult<R> DrillSideways.DrillSidewaysResult FacetField Add an instance of this to yourDocument
for every facet label.FacetQuery A termQuery
over aFacetField
.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 theLeafReaderContext
.FacetsCollectorManager ACollectorManager
implementation which produces FacetsCollector and produces a merged FacetsCollector.FacetsConfig Records per-dimension configuration.FacetsConfig.DimConfig Holds the configuration for one dimensionLabelAndValue Single label and its value, usually contained in aFacetResult
.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 aHashMap
for values above 1023.MultiFacetQuery A multi-termsQuery
over aFacetField
.MultiFacets Maps specified dims to provided Facets impls; else, uses the default Facets impl.RandomSamplingFacetsCollector Collects hits for subsequent faceting, using sampling if needed.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.