See: Description
Class | Description |
---|---|
ByteFieldSource |
Expert: obtains single byte field values from the
FieldCache
using getBytes() and makes those values
available as other numeric types, casting as needed. |
CustomScoreProvider |
An instance of this subclass should be returned by
CustomScoreQuery.getCustomScoreProvider(org.apache.lucene.index.IndexReader) , if you want
to modify the custom score calculation of a CustomScoreQuery . |
CustomScoreQuery |
Query that sets document score as a programmatic function of several (sub) scores:
the score of its subQuery (any query)
(optional) the score of its ValueSourceQuery (or queries).
|
DocValues |
Expert: represents field values as different types.
|
FieldCacheSource |
Expert: A base class for ValueSource implementations that retrieve values for
a single field from the
FieldCache . |
FieldScoreQuery |
A query that scores each document as the value of the numeric input field.
|
FieldScoreQuery.Type |
Type of score field, indicating how field values are interpreted/parsed.
|
FloatFieldSource |
Expert: obtains float field values from the
FieldCache
using getFloats() and makes those values
available as other numeric types, casting as needed. |
IntFieldSource |
Expert: obtains int field values from the
FieldCache
using getInts() and makes those values
available as other numeric types, casting as needed. |
OrdFieldSource |
Expert: obtains the ordinal of the field value from the default Lucene
Fieldcache using getStringIndex(). |
ReverseOrdFieldSource |
Expert: obtains the ordinal of the field value from the default Lucene
FieldCache using getStringIndex()
and reverses the order. |
ShortFieldSource |
Expert: obtains short field values from the
FieldCache
using getShorts() and makes those values
available as other numeric types, casting as needed. |
ValueSource |
Expert: source of values for basic function queries.
|
ValueSourceQuery |
Expert: A Query that sets the scores of document to the
values obtained from a
ValueSource . |
function
package provides tight control over documents scores.
Note: code snippets here should work, but they were never really compiled... so, tests sources under TestCustomScoreQuery, TestFieldScoreQuery and TestOrdValues may also be useful.
Indexing:
f = new Field("score", "7", Field.Store.NO, Field.Index.UN_TOKENIZED); f.setOmitNorms(true); d1.add(f);
Search:
Query q = new FieldScoreQuery("score", FieldScoreQuery.Type.BYTE);Document d1 above would get a score of 7.
Dividing the original score of each document by a square root of its docid (just to demonstrate what it takes to manipulate scores this way)
Query q = queryParser.parse("my query text"); CustomScoreQuery customQ = new CustomScoreQuery(q) { public float customScore(int doc, float subQueryScore, float valSrcScore) { return subQueryScore / Math.sqrt(docid); } };
For more informative debug info on the custom query, also override the name() method:
CustomScoreQuery customQ = new CustomScoreQuery(q) { public float customScore(int doc, float subQueryScore, float valSrcScore) { return subQueryScore / Math.sqrt(docid); } public String name() { return "1/sqrt(docid)"; } };
Taking the square root of the original score and multiplying it by a "short field driven score", ie, the short value that was indexed for the scored doc in a certain field:
Query q = queryParser.parse("my query text"); FieldScoreQuery qf = new FieldScoreQuery("shortScore", FieldScoreQuery.Type.SHORT); CustomScoreQuery customQ = new CustomScoreQuery(q,qf) { public float customScore(int doc, float subQueryScore, float valSrcScore) { return Math.sqrt(subQueryScore) * valSrcScore; } public String name() { return "shortVal*sqrt(score)"; } };