You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/02/01 23:02:07 UTC

svn commit: r1239355 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/search/JoinQParserPlugin.java core/src/test/org/apache/solr/TestJoin.java

Author: yonik
Date: Wed Feb  1 22:02:07 2012
New Revision: 1239355

URL: http://svn.apache.org/viewvc?rev=1239355&view=rev
Log:
SOLR-3062: join was ignoring acceptDocs

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestJoin.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1239355&r1=1239354&r2=1239355&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Feb  1 22:02:07 2012
@@ -303,6 +303,9 @@ Bug Fixes
 * SOLR-3037: When using binary format in solrj the codec screws up parameters
   (Sami Siren via yonik)
 
+* SOLR-3062: A join in the main query was not respecting any filters pushed
+  down to it via acceptDocs since LUCENE-1536. (Mike Hugo, yonik)
+
 
 Other Changes
 ----------------------

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1239355&r1=1239354&r2=1239355&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Wed Feb  1 22:02:07 2012
@@ -220,7 +220,8 @@ class JoinQuery extends Query {
         filter = resultSet.getTopFilter();
       }
 
-      DocIdSet readerSet = filter.getDocIdSet(context, null);  // this set only includes live docs
+      // Although this set only includes live docs, other filters can be pushed down to queries.
+      DocIdSet readerSet = filter.getDocIdSet(context, acceptDocs);
       if (readerSet == null) readerSet=DocIdSet.EMPTY_DOCIDSET;
       return new JoinScorer(this, readerSet.iterator(), getBoost());
     }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestJoin.java?rev=1239355&r1=1239354&r2=1239355&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestJoin.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestJoin.java Wed Feb  1 22:02:07 2012
@@ -128,6 +128,12 @@ public class TestJoin extends SolrTestCa
                  "debugQuery","true"),
              davesDepartments);
 
+    // find people that develop stuff - but limit via filter query to a name of "john"
+    // this tests filters being pushed down to queries (SOLR-3062)
+    assertJQ(req("q","{!join from=dept_id_s to=dept_s}text:develop", "fl","id", "fq", "name:john")
+             ,"/response=={'numFound':1,'start':0,'docs':[{'id':'1'}]}"
+            );
+
   }