Package org.apache.lucene.facet

# Class MultiDoubleValuesSource

java.lang.Object
org.apache.lucene.facet.MultiDoubleValuesSource

All Implemented Interfaces:
  `SegmentCacheable`

public abstract class MultiDoubleValuesSource extends Object implements SegmentCacheable
Base class for producing `MultiDoubleValues`. See also `DoubleValuesSource` for a single-valued version.

MultiDoubleValuesSource objects for NumericDocValues/SortedNumericDocValues fields can be obtained by calling `fromFloatField(String)`, `fromDoubleField(String)`, `fromIntField(String)`, or `fromLongField(String)`. If custom long-to-double logic is required, `fromField(String, LongToDoubleFunction)` can be used. This is valid for both multi-valued and single-valued fields.

To obtain a MultiDoubleValuesSource from an existing `DoubleValuesSource`, see `fromSingleValued(DoubleValuesSource)`. Instances created in this way can be "unwrapped" using `unwrapSingleton(MultiDoubleValuesSource)` if necessary. Note that scores are never provided to the underlying `DoubleValuesSource`. `DoubleValuesSource.rewrite(IndexSearcher)` will also never be called. The user should be aware of this if using a `DoubleValuesSource` that relies on rewriting or scores. The faceting use-cases don't call rewrite or provide scores, which is why this simplification was made.

Currently meant only for use within the faceting module. Could be further generalized and made available for more use-cases outside faceting if there is a desire to do so.

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

## Constructor Summary

Constructors
Constructor
Description
`MultiDoubleValuesSource()`
Instantiates a new MultiDoubleValuesSource

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`equals(Object o)`
`static MultiDoubleValuesSource`
`fromDoubleField(String field)`
Creates a MultiDoubleValuesSource that wraps a double-valued field
`static MultiDoubleValuesSource`
`fromField(String field, LongToDoubleFunction decoder)`
Creates a MultiDoubleValuesSource that wraps a generic NumericDocValues/SortedNumericDocValues field.
`static MultiDoubleValuesSource`
`fromFloatField(String field)`
Creates a MultiDoubleValuesSource that wraps a float-valued field
`static MultiDoubleValuesSource`
`fromIntField(String field)`
Creates a MultiDoubleValuesSource that wraps an int-valued field
`static MultiDoubleValuesSource`
`fromLongField(String field)`
Creates a MultiDoubleValuesSource that wraps a long-valued field
`static MultiDoubleValuesSource`
`fromSingleValued(DoubleValuesSource singleValued)`
Creates a MultiDoubleValuesSource that wraps a single-valued `DoubleValuesSource`
`abstract MultiDoubleValues`
`getValues(LeafReaderContext ctx)`
Returns a `MultiDoubleValues` instance for the passed-in LeafReaderContext
`abstract int`
`hashCode()`
`final MultiLongValuesSource`
`toMultiLongValuesSource()`
Convert to a MultiLongValuesSource by casting the double values to longs
`final MultiLongValuesSource`
`toSortableMultiLongValuesSource()`
Convert to a `MultiLongValuesSource` using `NumericUtils.doubleToSortableLong(double)`
`abstract String`
`toString()`
`static DoubleValuesSource`
`unwrapSingleton(MultiDoubleValuesSource in)`
Returns a single-valued view of the `MultiDoubleValuesSource` if it was previously wrapped with `fromSingleValued(DoubleValuesSource)`, or null.

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

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

### Methods inherited from interface org.apache.lucene.search.SegmentCacheable

`isCacheable`

## Constructor Details

### MultiDoubleValuesSource

public MultiDoubleValuesSource()
Instantiates a new MultiDoubleValuesSource

## Method Details

### getValues

public abstract MultiDoubleValues getValues(LeafReaderContext ctx) throws IOException
Returns a `MultiDoubleValues` instance for the passed-in LeafReaderContext

Throws:
  `IOException`

### hashCode

public abstract int hashCode()

Overrides:
  `hashCode` in class `Object`

### equals

public abstract boolean equals(Object o)

Overrides:
  `equals` in class `Object`

### toString

public abstract String toString()

Overrides:
  `toString` in class `Object`

### fromField

public static MultiDoubleValuesSource fromField(String field, LongToDoubleFunction decoder)
Creates a MultiDoubleValuesSource that wraps a generic NumericDocValues/SortedNumericDocValues field. Uses the long-to-double decoding logic specified in `decoder` for converting the stored value to a double.

### fromDoubleField

public static MultiDoubleValuesSource fromDoubleField(String field)
Creates a MultiDoubleValuesSource that wraps a double-valued field

### fromFloatField

public static MultiDoubleValuesSource fromFloatField(String field)
Creates a MultiDoubleValuesSource that wraps a float-valued field

### fromLongField

public static MultiDoubleValuesSource fromLongField(String field)
Creates a MultiDoubleValuesSource that wraps a long-valued field

### fromIntField

public static MultiDoubleValuesSource fromIntField(String field)
Creates a MultiDoubleValuesSource that wraps an int-valued field

### fromSingleValued

public static MultiDoubleValuesSource fromSingleValued(DoubleValuesSource singleValued)
Creates a MultiDoubleValuesSource that wraps a single-valued `DoubleValuesSource`

### unwrapSingleton

public static DoubleValuesSource unwrapSingleton(MultiDoubleValuesSource in)
Returns a single-valued view of the `MultiDoubleValuesSource` if it was previously wrapped with `fromSingleValued(DoubleValuesSource)`, or null.

### toMultiLongValuesSource

public final MultiLongValuesSource toMultiLongValuesSource()
Convert to a MultiLongValuesSource by casting the double values to longs

### toSortableMultiLongValuesSource

public final MultiLongValuesSource toSortableMultiLongValuesSource()
Convert to a `MultiLongValuesSource` using `NumericUtils.doubleToSortableLong(double)`