org.apache.lucene.search.function

## Class ReverseOrdFieldSource

- java.lang.Object
- - org.apache.lucene.search.function.ValueSource
  - - org.apache.lucene.search.function.ReverseOrdFieldSource

- All Implemented Interfaces:
    java.io.Serializable

      public class ReverseOrdFieldSource
      extends ValueSource

  Expert: obtains the ordinal of the field value from the default Lucene `FieldCache` using getStringIndex() and reverses the order.

  The native lucene index order is used to assign an ordinal value for each field value.

  Field values (terms) are lexicographically ordered by unicode value, and numbered starting at 1.
  Example of reverse ordinal (rord):
  If there were only three field values: "apple","banana","pear"
  then rord("apple")=3, rord("banana")=2, ord("pear")=1

  WARNING: rord() depends on the position in an index and can thus change when other documents are inserted or deleted, or if a MultiSearcher is used.

  WARNING: The status of the search.function package is experimental. The APIs introduced here might change in the future and will not be supported anymore in such a case.

  NOTE: with the switch in 2.9 to segment-based searching, if `getValues(org.apache.lucene.index.IndexReader)` is invoked with a composite (multi-segment) reader, this can easily cause double RAM usage for the values in the FieldCache. It's best to switch your application to pass only atomic (single segment) readers to this API. Alternatively, for a short-term fix, you could wrap your ValueSource using `MultiValueSource`, which costs more CPU per lookup but will not consume double the FieldCache RAM.

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `java.lang.String` | `field`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ReverseOrdFieldSource(java.lang.String field)` Contructor for a certain field.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `description()` description of field, used in explain()
    `boolean` | `equals(java.lang.Object o)` Needed for possible caching of query results - used by `ValueSourceQuery.equals(Object)`.
    `DocValues` | `getValues(IndexReader reader)` Return the DocValues used by the function query.
    `int` | `hashCode()` Needed for possible caching of query results - used by `ValueSourceQuery.hashCode()`.

    - ### Methods inherited from class org.apache.lucene.search.function.ValueSource

      `toString`

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

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

- - ### Field Detail

    - #### field

          public java.lang.String field

  - ### Constructor Detail

    - #### ReverseOrdFieldSource

          public ReverseOrdFieldSource(java.lang.String field)

      Contructor for a certain field.
      Parameters:
        `field` - field whose values reverse order is used.

  - ### Method Detail

    - #### description

          public java.lang.String description()

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

    - #### getValues

          public DocValues getValues(IndexReader reader)
                              throws java.io.IOException

      Description copied from class: `ValueSource`
      Return the DocValues used by the function query.
      Specified by:
        `getValues` in class `ValueSource`
      Parameters:
        `reader` - the IndexReader used to read these values. If any caching is involved, that caching would also be IndexReader based.
      Throws:
        `java.io.IOException` - for any error.

    - #### equals

          public boolean equals(java.lang.Object o)

      Description copied from class: `ValueSource`
      Needed for possible caching of query results - used by `ValueSourceQuery.equals(Object)`.
      Specified by:
        `equals` in class `ValueSource`
      See Also:
        `Object.equals(Object)`

    - #### hashCode

          public int hashCode()

      Description copied from class: `ValueSource`
      Needed for possible caching of query results - used by `ValueSourceQuery.hashCode()`.
      Specified by:
        `hashCode` in class `ValueSource`
      See Also:
        `Object.hashCode()`

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