org.apache.lucene.facet.range

## Class DoubleRangeFacetCounts

- java.lang.Object
- - org.apache.lucene.facet.Facets
  - - org.apache.lucene.facet.range.DoubleRangeFacetCounts

-     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)`.

  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    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 Summary

    Constructors
    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.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    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()`

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

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

- - ### Field Detail

    - #### ranges

          protected final Range[] ranges

      Ranges passed to constructor.

    - #### counts

          protected final int[] counts

      Counts, initialized in by subclass.

    - #### fastMatchQuery

          protected final Query fastMatchQuery

      Optional: if specified, we first test this Query to see whether the document should be checked for matching ranges. If this is null, all documents are checked.

    - #### field

          protected final String field

      Our field name.

    - #### totCount

          protected int totCount

      Total number of hits.

  - ### Constructor Detail

    - #### 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...)`

      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,
                                        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`

  - ### Method Detail

    - #### getLongRanges

          protected LongRange[] getLongRanges()

      Create long ranges from the double ranges.

    - #### mapDocValue

          protected long mapDocValue(long l)

      Map the stored bits to the `NumericUtils.sortableDoubleBits(long)` representation for counting.

    - #### createIterator

          protected DocIdSetIterator createIterator(FacetsCollector.MatchingDocs hits)
                                             throws IOException

      Create a `DocIdSetIterator` from the provided `hits` that relies on `fastMatchQuery` if available for first-pass filtering. A null response indicates no documents will match.
      Throws:
        `IOException`

    - #### count

          protected void count(String field,
                               List<FacetsCollector.MatchingDocs> matchingDocs)
                        throws IOException

      Counts from the provided field.
      Throws:
        `IOException`

    - #### getTopChildren

          public FacetResult getTopChildren(int topN,
                                            String dim,
                                            String... path)

      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`

    - #### 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`

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