You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by yo...@apache.org on 2009/07/16 17:17:39 UTC

svn commit: r794714 - in /lucene/solr/trunk/src/java/org/apache/solr/search/function: FunctionQuery.java ValueSource.java

Author: yonik
Date: Thu Jul 16 15:17:39 2009
New Revision: 794714

URL: http://svn.apache.org/viewvc?rev=794714&view=rev
Log:
SOLR-1284: implement new DISI.advance

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
    lucene/solr/trunk/src/java/org/apache/solr/search/function/ValueSource.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java?rev=794714&r1=794713&r2=794714&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java Thu Jul 16 15:17:39 2009
@@ -107,6 +107,34 @@
       vals = func.getValues(reader);
     }
 
+    @Override
+    public int docID() {
+      return doc;
+    }
+
+    @Override
+    // instead of matching all docs, we could also embed a query.
+    // the score could either ignore the subscore, or boost it.
+    // Containment:  floatline(foo:myTerm, "myFloatField", 1.0, 0.0f)
+    // Boost:        foo:myTerm^floatline("myFloatField",1.0,0.0f)
+    public int nextDoc() throws IOException {
+      for(;;) {
+        ++doc;
+        if (doc>=maxDoc) {
+          return doc=NO_MORE_DOCS;
+        }
+        if (hasDeletions && reader.isDeleted(doc)) continue;
+        return doc;
+      }
+    }
+
+    @Override
+    public int advance(int target) throws IOException {
+      // this will work even if target==NO_MORE_DOCS
+      doc=target-1;
+      return nextDoc();
+    }
+
     // instead of matching all docs, we could also embed a query.
     // the score could either ignore the subscore, or boost it.
     // Containment:  floatline(foo:myTerm, "myFloatField", 1.0, 0.0f)

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/ValueSource.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/ValueSource.java?rev=794714&r1=794713&r2=794714&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/ValueSource.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/ValueSource.java Thu Jul 16 15:17:39 2009
@@ -78,6 +78,27 @@
     return true;
   }
 
+  @Override
+  public int docID() {
+    return doc;
+  }
+
+  @Override
+  public int nextDoc() throws IOException {
+    for(;;) {
+      doc++;
+      if (doc >= maxDoc) return doc=NO_MORE_DOCS;
+      if (matches(doc)) return doc;
+    }
+  }
+
+  @Override
+  public int advance(int target) throws IOException {
+    // also works fine when target==NO_MORE_DOCS
+    doc = target-1;
+    return nextDoc();
+  }
+
   public int doc() {
     return doc;
   }