Package org.apache.lucene.facet.range

# 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 from `DoubleValuesSource.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.
  `protected final String`
  `field`
  Our field name.
  `protected final 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)`
  Create `RangeFacetCounts`, using double value from the specified field.
  `DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, DoubleRange... ranges)`
  Create `RangeFacetCounts`, using the provided `MultiDoubleValuesSource` if non-null.
  `DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges)`
  Create `RangeFacetCounts`, using the provided `MultiDoubleValuesSource` if non-null.
  `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.

- ## Method Summary

  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)`
  `protected org.apache.lucene.facet.range.LongRangeCounter`
  `setupCounter()`
  `String`
  `toString()`

  ### Methods inherited from class org.apache.lucene.facet.FacetCountsWithFilterQuery

  `createIterator`

  ### Methods inherited from class org.apache.lucene.facet.Facets

  `getTopDims, validateTopN`

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

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

- ## Field Details

  - ### ranges

    protected final Range[] ranges
    Ranges passed to constructor.

  - ### counts

    protected int[] counts
    Counts.

  - ### field

    protected final String field
    Our field name.

  - ### totCount

    protected int totCount
    Total number of hits.

- ## Constructor Details

  - ### DoubleRangeFacetCounts

    public DoubleRangeFacetCounts(String field, FacetsCollector hits, DoubleRange... ranges) throws IOException
    Create `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...)` or `DoubleRangeFacetCounts(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
    Create `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.

    Throws:
      `IOException`

  - ### DoubleRangeFacetCounts

    public DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, DoubleRange... ranges) throws IOException
    Create `RangeFacetCounts`, using the provided `MultiDoubleValuesSource` if non-null. If `valuesSource` 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.

    Throws:
      `IOException`

  - ### DoubleRangeFacetCounts

    public DoubleRangeFacetCounts(String field, DoubleValuesSource valueSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges) throws IOException
    Create `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.

    Throws:
      `IOException`

  - ### DoubleRangeFacetCounts

    public DoubleRangeFacetCounts(String field, MultiDoubleValuesSource valuesSource, FacetsCollector hits, Query fastMatchQuery, DoubleRange... ranges) throws IOException
    Create `RangeFacetCounts`, using the provided `MultiDoubleValuesSource` if non-null. If `valuesSource` 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.

    Throws:
      `IOException`

- ## Method Details

  - ### getLongRanges

    protected LongRange[] getLongRanges()
    Create long ranges from the double ranges.

  - ### mapDocValue

    protected long mapDocValue(long l)

  - ### setupCounter

    protected org.apache.lucene.facet.range.LongRangeCounter setupCounter()

  - ### 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 class `Facets`
    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 class `Facets`
    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 class `Facets`
    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 class `Facets`
    Throws:
      `IOException`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`