blob: 8c009a21a71979331ee2e3425c3a1397041a77a4 [file] [log] [blame]
Index: src/java/org/apache/lucene/search/ExactPhraseScorer.java
===================================================================
--- src/java/org/apache/lucene/search/ExactPhraseScorer.java (revision 447480)
+++ src/java/org/apache/lucene/search/ExactPhraseScorer.java (working copy)
@@ -28,6 +28,7 @@
protected final float phraseFreq() throws IOException {
// sort list with pq
+ pq.clear();
for (PhrasePositions pp = first; pp != null; pp = pp.next) {
pp.firstPosition();
pq.put(pp); // build pq from list
Index: src/java/org/apache/lucene/search/PhraseQueue.java
===================================================================
--- src/java/org/apache/lucene/search/PhraseQueue.java (revision 447480)
+++ src/java/org/apache/lucene/search/PhraseQueue.java (working copy)
@@ -27,7 +27,10 @@
PhrasePositions pp1 = (PhrasePositions)o1;
PhrasePositions pp2 = (PhrasePositions)o2;
if (pp1.doc == pp2.doc)
- return pp1.position < pp2.position;
+ if (pp1.position == pp2.position)
+ return pp1.position+pp1.offset < pp2.position+pp2.offset;
+ else
+ return pp1.position < pp2.position;
else
return pp1.doc < pp2.doc;
}
Index: src/java/org/apache/lucene/search/PhraseScorer.java
===================================================================
--- src/java/org/apache/lucene/search/PhraseScorer.java (revision 447480)
+++ src/java/org/apache/lucene/search/PhraseScorer.java (working copy)
@@ -93,6 +93,7 @@
}
public boolean skipTo(int target) throws IOException {
+ firstTime = false;
for (PhrasePositions pp = first; more && pp != null; pp = pp.next) {
more = pp.skipTo(target);
}
Index: src/test/org/apache/lucene/search/QueryUtils.java
===================================================================
--- src/test/org/apache/lucene/search/QueryUtils.java (revision 467721)
+++ src/test/org/apache/lucene/search/QueryUtils.java (working copy)
@@ -97,11 +97,15 @@
s.search(q,new HitCollector() {
public void collect(int doc, float score) {
try {
- boolean more = (which[0]++&0x02)==0 ? scorer.skipTo(sdoc[0]+1) : scorer.next();
+ boolean more = (which[0]++&0x02)==0 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //skip skip next next skip skip
+// boolean more = (which[0]++&0x02)!=0 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //next next skip skip next next
+// boolean more = (which[0]++&0x01)==0 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //skip next skip next skip next
+// boolean more = (which[0]++&0x01)!=0 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //next skip next skip next skip
+// boolean more = (which[0]++&0x01)==7 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //only next()
+// boolean more = (which[0]++&0x01)!=7 ? scorer.skipTo(sdoc[0]+1) : scorer.next(); //only skipTo()
sdoc[0] = scorer.doc();
float scorerScore = scorer.score();
float scoreDiff = Math.abs(score-scorerScore);
- scoreDiff=0; // TODO: remove this go get LUCENE-697 failures
if (more==false || doc != sdoc[0] || scoreDiff>maxDiff) {
throw new RuntimeException("ERROR matching docs:"
+"\n\tscorer.more=" + more + " doc="+sdoc[0] + " score="+scorerScore