public class DoubleRangeFacetCounts extends Facets
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 from DoubleValuesSource.fromFloatField(String)
.
Modifier and Type | Field and Description |
---|---|
protected int[] |
counts
Counts, initialized in by subclass.
|
protected Query |
fastMatchQuery
Optional: if specified, we first test this Query to
see whether the document should be checked for
matching ranges.
|
protected String |
field
Our field name.
|
protected Range[] |
ranges
Ranges passed to constructor.
|
protected int |
totCount
Total number of hits.
|
Constructor and Description |
---|
DoubleRangeFacetCounts(String field,
DoubleValuesSource valueSource,
FacetsCollector hits,
DoubleRange... ranges)
Create
RangeFacetCounts , using the provided DoubleValuesSource if non-null. |
DoubleRangeFacetCounts(String field,
DoubleValuesSource valueSource,
FacetsCollector hits,
Query fastMatchQuery,
DoubleRange... ranges)
Create
RangeFacetCounts , using the provided DoubleValuesSource if non-null. |
DoubleRangeFacetCounts(String field,
FacetsCollector hits,
DoubleRange... ranges)
Create
RangeFacetCounts , using double value from the specified field. |
Modifier and Type | Method and Description |
---|---|
protected void |
count(String field,
List<FacetsCollector.MatchingDocs> matchingDocs)
Counts from the provided field.
|
protected DocIdSetIterator |
createIterator(FacetsCollector.MatchingDocs hits)
Create a
DocIdSetIterator from the provided hits that
relies on fastMatchQuery if available for first-pass filtering. |
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)
Map the stored bits to the
NumericUtils.sortableDoubleBits(long) representation for counting. |
String |
toString() |
protected final Range[] ranges
protected final int[] counts
protected final Query fastMatchQuery
protected final String field
protected int totCount
public DoubleRangeFacetCounts(String field, FacetsCollector hits, DoubleRange... ranges) throws IOException
RangeFacetCounts
, 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, use DoubleRangeFacetCounts(String, DoubleValuesSource, FacetsCollector, DoubleRange...)
TODO: Extend multi-valued support to fields that have been indexed as float values
IOException
public DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, DoubleRange... ranges) throws IOException
RangeFacetCounts
, using the provided DoubleValuesSource
if non-null. If
valueSource
is null, doc values from the provided field
will be used.
N.B If relying on the provided field
, see javadoc notes associated with DoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the
field is indexed.
IOException
public DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges) throws IOException
RangeFacetCounts
, using the provided DoubleValuesSource
if non-null. If
valueSource
is null, doc values from the provided field
will be used. Use the
provided Query
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 with DoubleRangeFacetCounts(String, FacetsCollector, DoubleRange...)
for assumptions on how the
field is indexed.
IOException
protected LongRange[] getLongRanges()
protected long mapDocValue(long l)
NumericUtils.sortableDoubleBits(long)
representation for counting.protected DocIdSetIterator createIterator(FacetsCollector.MatchingDocs hits) throws IOException
DocIdSetIterator
from the provided hits
that
relies on fastMatchQuery
if available for first-pass filtering. A null response
indicates no documents will match.IOException
protected void count(String field, List<FacetsCollector.MatchingDocs> matchingDocs) throws IOException
IOException
public FacetResult getTopChildren(int topN, String dim, String... path)
Facets
getTopChildren
in class Facets
public Number getSpecificValue(String dim, String... path) throws IOException
Facets
getSpecificValue
in class Facets
IOException
public List<FacetResult> getAllDims(int topN) throws IOException
Facets
getAllDims
in class Facets
IOException
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.