diff --git a/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java b/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java index 2289117..3cdc05c 100644 --- a/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java +++ b/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexUpdate.java @@ -63,8 +63,8 @@ public void insert(String path, NodeBuilder value) { Preconditions.checkArgument(path.startsWith(this.path)); - if (!insert.containsKey(path)) { - String key = path.substring(this.path.length()); + String key = path.substring(this.path.length()); + if (!insert.containsKey(key)) { if ("".equals(key)) { key = "/"; } diff --git a/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java b/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java index 080e6cc..f2aa96b 100644 --- a/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java +++ b/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java @@ -73,7 +73,6 @@ } private SolrQuery getQuery(Filter filter) { - SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("q.op", "AND"); solrQuery.setParam("df", "catch_all"); @@ -95,9 +94,9 @@ if (path.equals("\\/") && pathRestriction.equals(Filter.PathRestriction.ALL_CHILDREN)) { queryBuilder.append("*"); } else { -// queryBuilder.append("\""); + queryBuilder.append("\""); queryBuilder.append(path); -// queryBuilder.append("\""); + queryBuilder.append("\""); } queryBuilder.append(" "); } @@ -105,7 +104,10 @@ Collection propertyRestrictions = filter.getPropertyRestrictions(); if (propertyRestrictions != null && !propertyRestrictions.isEmpty()) { for (Filter.PropertyRestriction pr : propertyRestrictions) { - + if (pr.propertyName.contains("/")) { + // lucene cannot handle child-level property restrictions + continue; + } String first = null; if (pr.first != null) { first = partialEscape(String.valueOf(pr.first.getValue(pr.first.getType()))).toString(); @@ -146,7 +148,9 @@ for (String fulltextCondition : fulltextConditions) { queryBuilder.append(fulltextCondition).append(" "); } - + if(queryBuilder.length() == 0) { + queryBuilder.append("*:*"); + } String escapedQuery = queryBuilder.toString(); solrQuery.setQuery(escapedQuery); diff --git a/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTest.java b/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTest.java index a585612..3ea4deb 100644 --- a/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTest.java +++ b/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTest.java @@ -83,7 +83,6 @@ } @Test - @Ignore("failing") public void sql2() throws Exception { test("sql2.txt"); }