Class ReciprocalFloatFunction
java.lang.Object
org.apache.lucene.queries.function.ValueSource
org.apache.lucene.queries.function.valuesource.ReciprocalFloatFunction
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:
-
Constructor Summary
ConstructorsConstructorDescriptionReciprocalFloatFunction
(ValueSource source, float m, float a, float b) f(source) = a/(m*float(source)+b) -
Method Summary
Modifier and TypeMethodDescriptionvoid
createWeight
(Map context, IndexSearcher searcher) Implementations should propagate createWeight to sub-ValueSources which can optionally store weight info in the context.description of field, used in explain()boolean
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
-
Constructor Details
-
ReciprocalFloatFunction
f(source) = a/(m*float(source)+b)
-
-
Method Details
-
getValues
Description copied from class:ValueSource
Gets the values for this reader and the context that was previously passed to createWeight()- Specified by:
getValues
in classValueSource
- Throws:
IOException
-
createWeight
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 classValueSource
- Throws:
IOException
-
description
Description copied from class:ValueSource
description of field, used in explain()- Specified by:
description
in classValueSource
-
hashCode
public int hashCode()- Specified by:
hashCode
in classValueSource
-
equals
- Specified by:
equals
in classValueSource
-