You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2015/02/21 16:12:17 UTC
svn commit: r1661377 -
/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
Author: rmuir
Date: Sat Feb 21 15:12:17 2015
New Revision: 1661377
URL: http://svn.apache.org/r1661377
Log:
LUCENE-6274: SloppyPhrase approximations
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java?rev=1661377&r1=1661376&r2=1661377&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java Sat Feb 21 15:12:17 2015
@@ -606,4 +606,49 @@ final class SloppyPhraseScorer extends S
@Override
public String toString() { return "scorer(" + weight + ")"; }
+
+ @Override
+ public TwoPhaseDocIdSetIterator asTwoPhaseIterator() {
+ return new TwoPhaseDocIdSetIterator() {
+ @Override
+ public DocIdSetIterator approximation() {
+ return new DocIdSetIterator() {
+ @Override
+ public int docID() {
+ return SloppyPhraseScorer.this.docID();
+ }
+
+ @Override
+ public int nextDoc() throws IOException {
+ return advance(max.doc + 1);
+ }
+
+ @Override
+ public int advance(int target) throws IOException {
+ assert target > docID();
+ if (!advanceMin(target)) {
+ return NO_MORE_DOCS;
+ }
+ while (min.doc < max.doc) {
+ if (!advanceMin(max.doc)) {
+ return NO_MORE_DOCS;
+ }
+ }
+ return max.doc;
+ }
+
+ @Override
+ public long cost() {
+ return SloppyPhraseScorer.this.cost();
+ }
+ };
+ }
+
+ @Override
+ public boolean matches() throws IOException {
+ sloppyFreq = phraseFreq(); // check for phrase
+ return sloppyFreq != 0F;
+ }
+ };
+ }
}