X-Git-Url: https://git.mdrn.pl/pylucene.git/blobdiff_plain/a2e61f0c04805cfcb8706176758d1283c7e3a55c..aaeed5504b982cf3545252ab528713250aa33eed:/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/search/function/package.html diff --git a/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/search/function/package.html b/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/search/function/package.html new file mode 100755 index 0000000..5da5fe8 --- /dev/null +++ b/lucene-java-3.5.0/lucene/src/java/org/apache/lucene/search/function/package.html @@ -0,0 +1,191 @@ + + +
+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)"; + } + }; ++ +