Package 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
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `MultiFunction.Values` | Base implementation that wraps multiple sources

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected List<ValueSource>` | `sources` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MultiFunction​(List<ValueSource> sources)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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<Object,​Object> 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<Object,​Object> 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<Object,​Object> 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<Object,​Object> 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`