Class DoubleRangeFacetCounts
- java.lang.Object
-
- org.apache.lucene.facet.Facets
-
- org.apache.lucene.facet.FacetCountsWithFilterQuery
-
- org.apache.lucene.facet.range.DoubleRangeFacetCounts
-
public class DoubleRangeFacetCounts extends FacetCountsWithFilterQuery
Facets
implementation that computes counts for dynamic double ranges. Use this for dimensions that change in real-time (e.g. a relative time based dimension like "Past day", "Past 2 days", etc.) or that change for each request (e.g. distance from the user's location, "< 1 km", "< 2 km", etc.).If you have indexed your field using
FloatDocValuesField
, then you should use a DoubleValuesSource generated fromDoubleValuesSource.fromFloatField(String)
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Field Summary
Fields Modifier and Type Field Description protected int[]
counts
Counts, initialized in by subclass.protected String
field
Our field name.protected Range[]
ranges
Ranges passed to constructor.protected int
totCount
Total number of hits.-
Fields inherited from class org.apache.lucene.facet.FacetCountsWithFilterQuery
fastMatchQuery
-
-
Constructor Summary
Constructors Constructor Description DoubleRangeFacetCounts(String field, FacetsCollector hits, DoubleRange... ranges)
CreateRangeFacetCounts
, using double value from the specified field.DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, DoubleRange... ranges)
CreateRangeFacetCounts
, using the providedMultiDoubleValuesSource
if non-null.DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges)
CreateRangeFacetCounts
, using the providedMultiDoubleValuesSource
if non-null.DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, DoubleRange... ranges)
CreateRangeFacetCounts
, using the providedDoubleValuesSource
if non-null.DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges)
CreateRangeFacetCounts
, using the providedDoubleValuesSource
if non-null.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
count(String field, List<FacetsCollector.MatchingDocs> matchingDocs)
Counts from the provided field.FacetResult
getAllChildren(String dim, String... path)
Returns all child labels with non-zero counts under the specified path.List<FacetResult>
getAllDims(int topN)
Returns topN labels for any dimension that had hits, sorted by the number of hits that dimension matched; this is used for "sparse" faceting, where many different dimensions were indexed, for example depending on the type of document.protected LongRange[]
getLongRanges()
Create long ranges from the double ranges.Number
getSpecificValue(String dim, String... path)
Return the count or value for a specific path.FacetResult
getTopChildren(int topN, String dim, String... path)
Returns the topN child labels under the specified path.protected long
mapDocValue(long l)
String
toString()
-
Methods inherited from class org.apache.lucene.facet.FacetCountsWithFilterQuery
createIterator
-
Methods inherited from class org.apache.lucene.facet.Facets
getTopDims, validateTopN
-
-
-
-
Constructor Detail
-
DoubleRangeFacetCounts
public DoubleRangeFacetCounts(String field, FacetsCollector hits, DoubleRange... ranges) throws IOException
CreateRangeFacetCounts
, using double value from the specified field. The field may be single-valued (NumericDocValues
) or multi-valued (SortedNumericDocValues
), and will be interpreted as containing double values.N.B This assumes that the field was indexed with
DoubleDocValuesField
. For float-valued fields, useDoubleRangeFacetCounts(String, DoubleValuesSource, FacetsCollector, DoubleRange...)
orDoubleRangeFacetCounts(String, MultiDoubleValuesSource, FacetsCollector, DoubleRange...)
TODO: Extend multi-valued support to fields that have been indexed as float values
- Throws:
IOException
-
DoubleRangeFacetCounts
public DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, DoubleRange... ranges) throws IOException
CreateRangeFacetCounts
, using the providedDoubleValuesSource
if non-null. IfvalueSource
is null, doc values from the providedfield
will be used.N.B If relying on the provided
field
, see javadoc notes associated withDoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the field is indexed.- Throws:
IOException
-
DoubleRangeFacetCounts
public DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, DoubleRange... ranges) throws IOException
CreateRangeFacetCounts
, using the providedMultiDoubleValuesSource
if non-null. IfvaluesSource
is null, doc values from the providedfield
will be used.N.B If relying on the provided
field
, see javadoc notes associated withDoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the field is indexed.- Throws:
IOException
-
DoubleRangeFacetCounts
public DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges) throws IOException
CreateRangeFacetCounts
, using the providedDoubleValuesSource
if non-null. IfvalueSource
is null, doc values from the providedfield
will be used. Use the providedQuery
as a fastmatch: only documents matching the query are checked for the matching ranges.N.B If relying on the provided
field
, see javadoc notes associated withDoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the field is indexed.- Throws:
IOException
-
DoubleRangeFacetCounts
public DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges) throws IOException
CreateRangeFacetCounts
, using the providedMultiDoubleValuesSource
if non-null. IfvaluesSource
is null, doc values from the providedfield
will be used. Use the providedQuery
as a fastmatch: only documents matching the query are checked for the matching ranges.N.B If relying on the provided
field
, see javadoc notes associated withDoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the field is indexed.- Throws:
IOException
-
-
Method Detail
-
getLongRanges
protected LongRange[] getLongRanges()
Create long ranges from the double ranges.
-
mapDocValue
protected long mapDocValue(long l)
-
count
protected void count(String field, List<FacetsCollector.MatchingDocs> matchingDocs) throws IOException
Counts from the provided field.- Throws:
IOException
-
getAllChildren
public FacetResult getAllChildren(String dim, String... path) throws IOException
Returns all child labels with non-zero counts under the specified path. Users should make no assumptions about ordering of the children. Returns null if the specified path doesn't exist or if this dimension was never seen.NOTE: This implementation guarantees that ranges will be returned in the order specified by the user when calling the constructor.
- Specified by:
getAllChildren
in classFacets
- Throws:
IOException
-
getTopChildren
public FacetResult getTopChildren(int topN, String dim, String... path) throws IOException
Description copied from class:Facets
Returns the topN child labels under the specified path. Returns null if the specified path doesn't exist or if this dimension was never seen.- Specified by:
getTopChildren
in classFacets
- Throws:
IOException
-
getSpecificValue
public Number getSpecificValue(String dim, String... path) throws IOException
Description copied from class:Facets
Return the count or value for a specific path. Returns -1 if this path doesn't exist, else the count.- Specified by:
getSpecificValue
in classFacets
- Throws:
IOException
-
getAllDims
public List<FacetResult> getAllDims(int topN) throws IOException
Description copied from class:Facets
Returns topN labels for any dimension that had hits, sorted by the number of hits that dimension matched; this is used for "sparse" faceting, where many different dimensions were indexed, for example depending on the type of document.- Specified by:
getAllDims
in classFacets
- Throws:
IOException
-
-