You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by do...@apache.org on 2007/06/07 04:17:02 UTC
svn commit: r545024 - in /lucene/java/trunk: CHANGES.txt
src/java/org/apache/lucene/search/DisjunctionMaxScorer.java
src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
Author: doronc
Date: Wed Jun 6 19:17:02 2007
New Revision: 545024
URL: http://svn.apache.org/viewvc?view=rev&rev=545024
Log:
LUCENE-912: DisjunctionMaxScorer first skipTo(target) call ignores the
skip target param and ends up at the first match.
Modified:
lucene/java/trunk/CHANGES.txt
lucene/java/trunk/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java
lucene/java/trunk/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?view=diff&rev=545024&r1=545023&r2=545024
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Wed Jun 6 19:17:02 2007
@@ -156,6 +156,10 @@
21. LUCENE-903: FilteredQuery explanation inaccuracy with boost.
Explanation tests now "deep" check the explanation details.
(Chris Hostetter, Doron Cohen)
+
+22. LUCENE-912: DisjunctionMaxScorer first skipTo(target) call ignores the
+ skip target param and ends up at the first match.
+ (Sudaakeran B. via Chris Hostetter & Doron Cohen)
New features
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java?view=diff&rev=545024&r1=545023&r2=545024
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/DisjunctionMaxScorer.java Wed Jun 6 19:17:02 2007
@@ -117,7 +117,6 @@
if (!more) return false;
heapify();
firstTime = false;
- return true; // more would have been false if no subScorers had any docs
}
while (subScorers.size()>0 && ((Scorer)subScorers.get(0)).doc()<target) {
Modified: lucene/java/trunk/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?view=diff&rev=545024&r1=545023&r2=545024
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Wed Jun 6 19:17:02 2007
@@ -29,6 +29,7 @@
import org.apache.lucene.store.RAMDirectory;
import java.text.DecimalFormat;
+import java.io.IOException;
/**
* Test of the DisjunctionMaxQuery.
@@ -124,6 +125,36 @@
s = new IndexSearcher(r);
s.setSimilarity(sim);
}
+
+ public void testSkipToFirsttimeMiss() throws IOException {
+ final DisjunctionMaxQuery dq = new DisjunctionMaxQuery(0.0f);
+ dq.add(tq("id","d1"));
+ dq.add(tq("dek","DOES_NOT_EXIST"));
+
+ QueryUtils.check(dq,s);
+
+ final Weight dw = dq.weight(s);
+ final Scorer ds = dw.scorer(r);
+ final boolean skipOk = ds.skipTo(3);
+ if (skipOk) {
+ fail("firsttime skipTo found a match? ... " +
+ r.document(ds.doc()).get("id"));
+ }
+ }
+
+ public void testSkipToFirsttimeHit() throws IOException {
+ final DisjunctionMaxQuery dq = new DisjunctionMaxQuery(0.0f);
+ dq.add(tq("dek","albino"));
+ dq.add(tq("dek","DOES_NOT_EXIST"));
+
+ QueryUtils.check(dq,s);
+
+ final Weight dw = dq.weight(s);
+ final Scorer ds = dw.scorer(r);
+ assertTrue("firsttime skipTo found no match", ds.skipTo(3));
+ assertEquals("found wrong docid", "d4", r.document(ds.doc()).get("id"));
+ }
+
public void testSimpleEqualScores1() throws Exception {