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"));
}