Class ReciprocalFloatFunction
- java.lang.Object
-
- org.apache.lucene.queries.function.ValueSource
-
- org.apache.lucene.queries.function.valuesource.ReciprocalFloatFunction
-
public class ReciprocalFloatFunction extends ValueSource
ReciprocalFloatFunctionimplements a reciprocal function f(x) = a/(mx+b), based on the float value of a field or function as exported byValueSource.
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
-
-
Constructor Summary
Constructors Constructor Description ReciprocalFloatFunction(ValueSource source, float m, float a, float b)f(source) = a/(m*float(source)+b)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcreateWeight(java.util.Map context, IndexSearcher searcher)Implementations should propagate createWeight to sub-ValueSources which can optionally store weight info in the context.java.lang.Stringdescription()description of field, used in explain()booleanequals(java.lang.Object o)FunctionValuesgetValues(java.util.Map context, AtomicReaderContext readerContext)Gets the values for this reader and the context that was previously passed to createWeight()inthashCode()-
Methods inherited from class org.apache.lucene.queries.function.ValueSource
getSortField, newContext, toString
-
-
-
-
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(java.util.Map context, AtomicReaderContext readerContext) throws java.io.IOException
Description copied from class:ValueSourceGets the values for this reader and the context that was previously passed to createWeight()- Specified by:
getValuesin classValueSource- Throws:
java.io.IOException
-
createWeight
public void createWeight(java.util.Map context, IndexSearcher searcher) throws java.io.IOExceptionDescription copied from class:ValueSourceImplementations 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:
createWeightin classValueSource- Throws:
java.io.IOException
-
description
public java.lang.String description()
Description copied from class:ValueSourcedescription of field, used in explain()- Specified by:
descriptionin classValueSource
-
hashCode
public int hashCode()
- Specified by:
hashCodein classValueSource
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin classValueSource
-
-