Author: tommaso
Date: Fri Jul 24 10:33:32 2015
New Revision: 1692478

URL: http://svn.apache.org/r1692478
Log:
OAK-3142 - using solr's fqs for desc and pt restrictions

Modified:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java?rev=1692478&r1=1692477&r2=1692478&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 Fri Jul 24 10:33:32 2015
@@ -199,20 +199,22 @@ class FilterQueryParser {
 
         if (configuration.useForPrimaryTypes()) {
             String[] pts = filter.getPrimaryTypes().toArray(new 
String[filter.getPrimaryTypes().size()]);
+            StringBuilder ptQueryBuilder = new StringBuilder();
             for (int i = 0; i < pts.length; i++) {
                 String pt = pts[i];
                 if (i == 0) {
-                    queryBuilder.append("(");
+                    ptQueryBuilder.append("(");
                 }
                 if (i > 0 && i < pts.length) {
-                    queryBuilder.append("OR ");
+                    ptQueryBuilder.append("OR ");
                 }
-                
queryBuilder.append("jcr\\:primaryType").append(':').append(partialEscape(pt)).append("
 ");
+                
ptQueryBuilder.append("jcr\\:primaryType").append(':').append(partialEscape(pt)).append("
 ");
                 if (i == pts.length - 1) {
-                    queryBuilder.append(")");
-                    queryBuilder.append(' ');
+                    ptQueryBuilder.append(")");
+                    ptQueryBuilder.append(' ');
                 }
             }
+            solrQuery.addFilterQuery(ptQueryBuilder.toString());
         }
 
         if (configuration.useForPathRestrictions()) {
@@ -221,9 +223,13 @@ class FilterQueryParser {
                 String path = purgePath(filter);
                 String fieldName = 
configuration.getFieldForPathRestriction(pathRestriction);
                 if (fieldName != null) {
-                    queryBuilder.append(fieldName);
-                    queryBuilder.append(':');
-                    queryBuilder.append(path);
+                    if 
(pathRestriction.equals(Filter.PathRestriction.ALL_CHILDREN)) {
+                        solrQuery.addFilterQuery(fieldName + ':' + path);
+                    } else {
+                        queryBuilder.append(fieldName);
+                        queryBuilder.append(':');
+                        queryBuilder.append(path);
+                    }
                 }
             }
         }

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java?rev=1692478&r1=1692477&r2=1692478&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java
 Fri Jul 24 10:33:32 2015
@@ -57,7 +57,8 @@ public class FilterQueryParserTest {
         when(filter.getPath()).thenReturn("/");
         SolrQuery solrQuery = FilterQueryParser.getQuery(filter, null, 
configuration);
         assertNotNull(solrQuery);
-        
assertEquals(configuration.getFieldForPathRestriction(pathRestriction)+":\\/", 
solrQuery.get("q"));
+        
assertEquals(configuration.getFieldForPathRestriction(pathRestriction)+":\\/", 
solrQuery.get("fq"));
+        assertEquals("*:*", solrQuery.get("q"));
     }
 
 


Reply via email to