org.apache.lucene.queries.function.valuesource

## Class MultiFunction

- java.lang.Object
- - org.apache.lucene.queries.function.ValueSource
  - - org.apache.lucene.queries.function.valuesource.MultiFunction

Direct Known Subclasses:
  DefFunction

    public abstract class MultiFunction
    extends ValueSource

Abstract parent class for `ValueSource` implementations that wrap multiple ValueSources and apply their own logic.

### Nested Class Summary

Nested Classes
`class` `MultiFunction.Values`

### Field Summary

Fields
`protected List<ValueSource>` `sources`

### Constructor Summary

Constructors
Constructor and Description
`MultiFunction(List<ValueSource> sources)`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static boolean` `allExists(int doc, FunctionValues[] values)` Helper utility for `FunctionValues`
`static boolean` `allExists(int doc, FunctionValues values1, FunctionValues values2)` Equivalent to the `FunctionValues[]` method with the same name, but optimized for dealing with exactly 2 arguments.
`static boolean` `anyExists(int doc, FunctionValues[] values)` Helper utility for `FunctionValues`
`static boolean` `anyExists(int doc, FunctionValues values1, FunctionValues values2)` Equivalent to the `FunctionValues[]` method with the same name, but optimized for dealing with exactly 2 arguments.
`void` `createWeight(Map context, IndexSearcher searcher)` Implementations should propagate createWeight to sub-ValueSources which can optionally store weight info in the context.
`String` `description()` description of field, used in explain()
`static String` `description(String name, List<ValueSource> sources)`
`boolean` `equals(Object o)`
`int` `hashCode()`
`protected abstract String` `name()`
`static String` `toString(String name, FunctionValues[] valsArr, int doc)`
`static FunctionValues[]` `valsArr(List<ValueSource> sources, Map fcontext, LeafReaderContext readerContext)`

### Methods inherited from class org.apache.lucene.queries.function.ValueSource

`asDoubleValuesSource, asLongValuesSource, fromDoubleValuesSource, getSortField, getValues, newContext, toString`

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

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

### Field Detail

#### sources

    protected final List<ValueSource> sources

### Constructor Detail

#### MultiFunction

    public MultiFunction(List<ValueSource> sources)

### Method Detail

#### name

    protected abstract String name()

#### description

    public String description()

Description copied from class: `ValueSource`
description of field, used in explain()

Specified by:
  `description` in class `ValueSource`

#### allExists

    public static boolean allExists(int doc,
                                    FunctionValues[] values)
                             throws IOException

Helper utility for `FunctionValues`

Returns:
  true if all of the specified `values` `FunctionValues.exists(int)` for the specified doc, else false.
Throws:
  `IOException`

#### anyExists

    public static boolean anyExists(int doc,
                                    FunctionValues[] values)
                             throws IOException

Helper utility for `FunctionValues`

Returns:
  true if any of the specified `values` `FunctionValues.exists(int)` for the specified doc, else false.
Throws:
  `IOException`

#### allExists

    public static boolean allExists(int doc,
                                    FunctionValues values1,
                                    FunctionValues values2)
                             throws IOException

Equivalent to the `FunctionValues[]` method with the same name, but optimized for dealing with exactly 2 arguments.

Returns:
  true if both of the specified `values` `FunctionValues.exists(int)` for the specified doc, else false.
Throws:
  `IOException`
See Also:
  `anyExists(int,FunctionValues[])`

#### anyExists

    public static boolean anyExists(int doc,
                                    FunctionValues values1,
                                    FunctionValues values2)
                             throws IOException

Equivalent to the `FunctionValues[]` method with the same name, but optimized for dealing with exactly 2 arguments.

Returns:
  true if either of the specified `values` `FunctionValues.exists(int)` for the specified doc, else false.
Throws:
  `IOException`
See Also:
  `anyExists(int,FunctionValues[])`

#### description

    public static String description(String name,
                                     List<ValueSource> sources)

#### valsArr

    public static FunctionValues[] valsArr(List<ValueSource> sources,
                                           Map fcontext,
                                           LeafReaderContext readerContext)
                                    throws IOException

Throws:
  `IOException`

#### toString

    public static String toString(String name,
                                  FunctionValues[] valsArr,
                                  int doc)
                           throws IOException

Throws:
  `IOException`

#### createWeight

    public void createWeight(Map context,
                             IndexSearcher searcher)
                      throws IOException

Description copied from class: `ValueSource`
Implementations should propagate createWeight to sub-ValueSources which can optionally store weight info in the context. The context object will be passed to getValues() where this info can be retrieved.

Overrides:
  `createWeight` in class `ValueSource`
Throws:
  `IOException`

#### hashCode

    public int hashCode()

Specified by:
  `hashCode` in class `ValueSource`

#### equals

    public boolean equals(Object o)

Specified by:
  `equals` in class `ValueSource`