org.apache.lucene.queries.function.valuesource
Class ReciprocalFloatFunction

java.lang.Object
  extended by org.apache.lucene.queries.function.ValueSource
      extended by org.apache.lucene.queries.function.valuesource.ReciprocalFloatFunction

public class ReciprocalFloatFunction
extends ValueSource

ReciprocalFloatFunction implements a reciprocal function f(x) = a/(mx+b), based on the float value of a field or function as exported by ValueSource.
When a and b are equal, and x>=0, this function has a maximum value of 1 that drops as x increases. Increasing the value of a and b together results in a movement of the entire function to a flatter part of the curve.

These properties make this an idea function for boosting more recent documents.

Example: recip(ms(NOW,mydatefield),3.16e-11,1,1)

A multiplier of 3.16e-11 changes the units from milliseconds to years (since there are about 3.16e10 milliseconds per year). Thus, a very recent date will yield a value close to 1/(0+1) or 1, a date a year in the past will get a multiplier of about 1/(1+1) or 1/2, and date two years old will yield 1/(2+1) or 1/3.

See Also:
FunctionQuery

Field Summary
protected  float a
           
protected  float b
           
protected  float m
           
protected  ValueSource source
           
 
Constructor Summary
ReciprocalFloatFunction(ValueSource source, float m, float a, float b)
          f(source) = a/(m*float(source)+b)
 
Method Summary
 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()
 boolean equals(Object o)
           
 FunctionValues getValues(Map context, AtomicReaderContext readerContext)
          Gets the values for this reader and the context that was previously passed to createWeight()
 int hashCode()
           
 
Methods inherited from class org.apache.lucene.queries.function.ValueSource
getSortField, newContext, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

source

protected final ValueSource source

m

protected final float m

a

protected final float a

b

protected final float b
Constructor Detail

ReciprocalFloatFunction

public ReciprocalFloatFunction(ValueSource source,
                               float m,
                               float a,
                               float b)
f(source) = a/(m*float(source)+b)

Method Detail

getValues

public FunctionValues getValues(Map context,
                                AtomicReaderContext readerContext)
                         throws IOException
Description copied from class: ValueSource
Gets the values for this reader and the context that was previously passed to createWeight()

Specified by:
getValues in class ValueSource
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

description

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

Specified by:
description in class ValueSource

hashCode

public int hashCode()
Specified by:
hashCode in class ValueSource

equals

public boolean equals(Object o)
Specified by:
equals in class ValueSource


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