From 5a1fdc2a72280ed01c1dea20a9ec0edf777f7f92 Mon Sep 17 00:00:00 2001
From: "Chris M. Hostetter"
+ * Background: llthough the contract of the Scorer class requires that
+ * documents be iterated in order of doc id this was not true in early
+ * versions of Lucene. Many pieces of functionality in the current
+ * Lucene code base have undefined behavior if this contract is not
+ * upheld, but in some specific simple cases may be faster. (For
+ * example: disjunction queries with less than 32 prohibited clauses;
+ * This setting has no effect for other queries.)
+ *
+ * Specifics: By setting this option to this true, calls to
* {@link HitCollector#collect(int,float)} might be
* invoked first for docid N and only later for docid N-1.
* Being static, this setting is system wide.
- * If collecting docs out of order is allowed, scoring might be faster
- * for certain queries, for example disjunction queries with
- * less than 32 prohibited clauses.
- * This setting has no effect for other queries.
+ *
+ * A
+ * Document scores are computed using a given
+ * When this method is used the {@link #explain(int)} method should not
+ * be used.
+ * Behaves as if written:
+ * The behavior of this method is undefined if the target specified is
+ * less then or equal to the current value of {@link #doc()}
+ *
+ * Behaves as if written:
+ *
A Scorer
either iterates over documents matching a query,
- * or provides an explanation of the score for a query for a given document.
- *
Document scores are computed using a given Similarity
implementation.
+/**
+ * Expert: Common scoring functionality for different types of queries.
+ *
+ * Scorer
either iterates over documents matching a
+ * query in increasing order of doc Id, or provides an explanation of
+ * the score for a query for a given document.
+ * Similarity
+ * implementation.
+ *
When this method is used the {@link #explain(int)} method should not be used.
+ * @see BooleanQuery#setAllowDocsOutOfOrder
*/
public abstract boolean next() throws IOException;
@@ -84,12 +103,16 @@ public abstract class Scorer {
*/
public abstract float score() throws IOException;
- /** Skips to the first match beyond the current whose document number is
+ /**
+ * Skips to the document matching this Scorer with the lowest doc Id
* greater than or equal to a given target.
- *
When this method is used the {@link #explain(int)} method should not be used.
- * @param target The target document number.
- * @return true iff there is such a match.
- *
+ *
+ *
+ * Most implementations are considerably more efficient than that.
+ *
* boolean skipTo(int target) {
* do {
* if (!next())
@@ -97,7 +120,18 @@ public abstract class Scorer {
* } while (target > doc());
* return true;
* }
- *
Most implementations are considerably more efficient than that.
+ *
+ * When this method is used the {@link #explain(int)} method should not + * be used. + *
+ * + * @param target The target document number. + * @return true iff there is such a match. + * @see BooleanQuery#setAllowDocsOutOfOrder */ public abstract boolean skipTo(int target) throws IOException;