You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2015/07/28 09:10:02 UTC

svn commit: r1693006 - in /jackrabbit/oak/branches/1.2: ./ oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/ oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/ oak-sol...

Author: tommaso
Date: Tue Jul 28 07:10:01 2015
New Revision: 1693006

URL: http://svn.apache.org/r1693006
Log:
OAK-3147 - configurable jcr:content descendants collapsing (branch 1.2)

Modified:
    jackrabbit/oak/branches/1.2/   (props changed)
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml
    jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTestIT.java
    jackrabbit/oak/branches/1.2/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml

Propchange: jackrabbit/oak/branches/1.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jul 28 07:10:01 2015
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414-1673415,1673436,1673644,1673662-1673664,1673669,1673695,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674228,1674780,1674880,1675054-1675055,1675319,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678124,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679232,1679235,1679503,1679958,1679961,1680170,1680172,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1682042,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174-1684175,1684186,1684376,1684442,1684561,1684570,1684601,1684618,1684820,1684868,1685023
 ,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686162,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053-1687055,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688089-1688090,1688172,1688179,1688349,1688421,1688436,1688453,1688616,1688622,1688634,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690885,1690941,1691139,1691151,1691159,1691167,1691183,1691188,1691210,1691280,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692133-1692134,1692274,1692363,1692478,1692998,1693002
+/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414-1673415,1673436,1673644,1673662-1673664,1673669,1673695,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674228,1674780,1674880,1675054-1675055,1675319,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678124,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679232,1679235,1679503,1679958,1679961,1680170,1680172,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1682042,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174-1684175,1684186,1684376,1684442,1684561,1684570,1684601,1684618,1684820,1684868,1685023
 ,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686162,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053-1687055,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688089-1688090,1688172,1688179,1688349,1688421,1688436,1688453,1688616,1688622,1688634,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690885,1690941,1691139,1691151,1691159,1691167,1691183,1691188,1691210,1691280,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692133-1692134,1692274,1692363,1692478,1692955,1692998,1693002
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java Tue Jul 28 07:10:01 2015
@@ -122,4 +122,15 @@ public class DefaultSolrConfiguration im
         return usedProperties;
     }
 
+    @Override
+    public boolean collapseJcrContentNodes() {
+        return SolrServerConfigurationDefaults.COLLAPSE_JCR_CONTENT_NODES;
+    }
+
+    @Nonnull
+    @Override
+    public String getCollapsedPathField() {
+        return SolrServerConfigurationDefaults.COLLAPSED_PATH_FIELD;
+    }
+
 }

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java Tue Jul 28 07:10:01 2015
@@ -132,6 +132,25 @@ public interface OakSolrConfiguration {
     Collection<String> getUsedProperties();
 
     /**
+     * Make all nodes / documents matching a query that are descendants of a 'jcr:content' node collapse into such a
+     * node. That will result in resultsets being tipically much more compact in cases where most / all of the matching
+     * nodes match such a hierarchy.
+     *
+     * @return {@code true} if only the 'jcr:content' node should be returned for all its the matching descendants,
+     * {@code false} otherwise
+     */
+    boolean collapseJcrContentNodes();
+
+    /**
+     * Provide the name of the field to be used for indexing the collapsed path of each node when {@link #collapseJcrContentNodes()}
+     * is set to {@code true}.
+     *
+     * @return the name of the Solr field to be used for indexing and searching on collapsed paths.
+     */
+    @Nonnull
+    String getCollapsedPathField();
+
+    /**
      * Enum for describing Solr commit policy used in a certain instance
      */
     enum CommitPolicy {

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java Tue Jul 28 07:10:01 2015
@@ -49,5 +49,7 @@ public class SolrServerConfigurationDefa
     public static final String[] IGNORED_PROPERTIES = {"rep:members", "rep:authorizableId", "jcr:uuid", "rep:principalName", "rep:password"};
     public static final String TYPE_MAPPINGS = "";
     public static final String PROPERTY_MAPPINGS = "";
+    public static final boolean COLLAPSE_JCR_CONTENT_NODES = false;
+    public static final String COLLAPSED_PATH_FIELD = "path_collapsed";
 
 }

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java Tue Jul 28 07:10:01 2015
@@ -180,6 +180,17 @@ public class OakSolrNodeStateConfigurati
         return usedProperties;
     }
 
+    @Override
+    public boolean collapseJcrContentNodes() {
+        return getBooleanValueFor(Properties.COLLAPSE_JCR_CONTENT_NODES, SolrServerConfigurationDefaults.COLLAPSE_JCR_CONTENT_NODES);
+    }
+
+    @Nonnull
+    @Override
+    public String getCollapsedPathField() {
+        return getStringValueFor(Properties.COLLAPSED_PATH_FIELD, SolrServerConfigurationDefaults.COLLAPSED_PATH_FIELD);
+    }
+
     private boolean getBooleanValueFor(String propertyName, boolean defaultValue) {
         boolean value = defaultValue;
         PropertyState property = definition.getProperty(propertyName);
@@ -229,6 +240,7 @@ public class OakSolrNodeStateConfigurati
     public final class Properties {
         // --> oak solr config properties <--
         public static final String PATH_FIELD = "pathField";
+        public static final String COLLAPSED_PATH_FIELD = "pathField";
         public static final String PARENT_FIELD = "parentField";
         public static final String CHILDREN_FIELD = "childrenField";
         public static final String DESCENDANTS_FIELD = "descendantsField";
@@ -242,6 +254,6 @@ public class OakSolrNodeStateConfigurati
         public static final String TYPE_MAPPINGS = "typeMappings";
         public static final String PROPERTY_MAPPINGS = "propertyMappings";
         public static final String USED_PROPERTIES = "usedProperties";
-
+        public static final String COLLAPSE_JCR_CONTENT_NODES = "collapseJcrContentNodes";
     }
 }

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditor.java Tue Jul 28 07:10:01 2015
@@ -211,6 +211,18 @@ class SolrIndexEditor implements IndexEd
         SolrInputDocument inputDocument = new SolrInputDocument();
         String path = getPath();
         inputDocument.addField(configuration.getPathField(), path);
+
+        if (configuration.collapseJcrContentNodes()) {
+            int jcrContentIndex = path.lastIndexOf(JcrConstants.JCR_CONTENT);
+            if (jcrContentIndex >= 0) {
+                int index = jcrContentIndex + JcrConstants.JCR_CONTENT.length();
+                String collapsedPath = path.substring(0, index);
+                inputDocument.addField(configuration.getCollapsedPathField(), collapsedPath);
+            } else {
+                inputDocument.addField(configuration.getCollapsedPathField(), path);
+            }
+        }
+
         for (PropertyState property : state.getProperties()) {
             if ((configuration.getUsedProperties().size() > 0 && configuration.getUsedProperties().contains(property.getName()))
                     || !configuration.getIgnoredProperties().contains(property.getName())) {

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java Tue Jul 28 07:10:01 2015
@@ -60,6 +60,9 @@ public class OakSolrConfigurationProvide
     @Property(value = SolrServerConfigurationDefaults.CATCHALL_FIELD, label = "catch all field")
     private static final String CATCH_ALL_FIELD = "catch.all.field";
 
+    @Property(value = SolrServerConfigurationDefaults.COLLAPSED_PATH_FIELD, label = "field for collapsing jcr:content paths")
+    private static final String COLLAPSED_PATH_FIELD = "collapsed.path.field";
+
     @Property(options = {
             @PropertyOption(name = "HARD",
                     value = "Hard commit"
@@ -74,7 +77,6 @@ public class OakSolrConfigurationProvide
     )
     private static final String COMMIT_POLICY = "commit.policy";
 
-
     @Property(intValue = SolrServerConfigurationDefaults.ROWS, label = "rows")
     private static final String ROWS = "rows";
 
@@ -104,10 +106,14 @@ public class OakSolrConfigurationProvide
             "mappings from JCR property names to Solr fields")
     private static final String PROPERTY_MAPPINGS = "property.mappings";
 
+    @Property(boolValue = SolrServerConfigurationDefaults.COLLAPSE_JCR_CONTENT_NODES, label = "collapse jcr:content nodes")
+    private static final String COLLAPSE_JCR_CONTENT_NODES = "collapse.jcrcontent.nodes";
+
     private String pathChildrenFieldName;
     private String pathParentFieldName;
     private String pathDescendantsFieldName;
     private String pathExactFieldName;
+    private String collapsedPathField;
     private String catchAllField;
     private OakSolrConfiguration.CommitPolicy commitPolicy;
     private int rows;
@@ -118,6 +124,7 @@ public class OakSolrConfigurationProvide
     private String[] usedProperties;
     private String[] typeMappings;
     private String[] propertyMappings;
+    private boolean collapseJcrContentNodes;
 
     private OakSolrConfiguration oakSolrConfiguration;
 
@@ -126,6 +133,7 @@ public class OakSolrConfigurationProvide
         pathChildrenFieldName = String.valueOf(componentContext.getProperties().get(PATH_CHILDREN_FIELD));
         pathParentFieldName = String.valueOf(componentContext.getProperties().get(PATH_PARENT_FIELD));
         pathExactFieldName = String.valueOf(componentContext.getProperties().get(PATH_EXACT_FIELD));
+        collapsedPathField= String.valueOf(componentContext.getProperties().get(COLLAPSED_PATH_FIELD));
         pathDescendantsFieldName = String.valueOf(componentContext.getProperties().get(PATH_DESCENDANTS_FIELD));
         catchAllField = String.valueOf(componentContext.getProperties().get(CATCH_ALL_FIELD));
         rows = Integer.parseInt(String.valueOf(componentContext.getProperties().get(ROWS)));
@@ -137,6 +145,7 @@ public class OakSolrConfigurationProvide
         ignoredProperties = PropertiesUtil.toStringArray(componentContext.getProperties().get(IGNORED_PROPERTIES));
         usedProperties = PropertiesUtil.toStringArray(componentContext.getProperties().get(USED_PROPERTIES));
         propertyMappings = PropertiesUtil.toStringArray(componentContext.getProperties().get(PROPERTY_MAPPINGS));
+        collapseJcrContentNodes = Boolean.valueOf(String.valueOf(componentContext.getProperties().get(COLLAPSE_JCR_CONTENT_NODES)));
     }
 
     @Deactivate
@@ -263,6 +272,17 @@ public class OakSolrConfigurationProvide
                         return Collections.emptyList();
                     }
                 }
+
+                @Override
+                public boolean collapseJcrContentNodes() {
+                    return collapseJcrContentNodes;
+                }
+
+                @Nonnull
+                @Override
+                public String getCollapsedPathField() {
+                    return collapsedPathField;
+                }
             };
         }
         return oakSolrConfiguration;

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java Tue Jul 28 07:10:01 2015
@@ -235,6 +235,10 @@ class FilterQueryParser {
             }
         }
 
+        if (configuration.collapseJcrContentNodes()) {
+            solrQuery.addFilterQuery("{!collapse field=" + configuration.getCollapsedPathField() + "}");
+        }
+
         if (queryBuilder.length() == 0) {
             queryBuilder.append("*:*");
         }

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml Tue Jul 28 07:10:01 2015
@@ -118,6 +118,7 @@
         <field name=":indexed" type="tdate" indexed="true" stored="false" default="NOW" docValues="true"/>
         <field name=":suggest-weight" type="tint" indexed="false" stored="false" default="1" docValues="true"/>
         <field name=":suggest" type="string" indexed="true" stored="true" multiValued="true" />
+        <field name="path_collapsed" type="string" indexed="true" stored="false"/>
         <field name="_version_" type="long" indexed="true" stored="true"/>
 
         <!-- sorting dynamic fields -->

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParserTest.java Tue Jul 28 07:10:01 2015
@@ -22,8 +22,11 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.solr.client.solrj.SolrQuery;
 import org.junit.Test;
 
+import java.util.Arrays;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -57,7 +60,8 @@ public class FilterQueryParserTest {
         when(filter.getPath()).thenReturn("/");
         SolrQuery solrQuery = FilterQueryParser.getQuery(filter, null, configuration);
         assertNotNull(solrQuery);
-        assertEquals(configuration.getFieldForPathRestriction(pathRestriction)+":\\/", solrQuery.get("fq"));
+        String[] filterQueries = solrQuery.getFilterQueries();
+        assertTrue(Arrays.asList(filterQueries).contains(configuration.getFieldForPathRestriction(pathRestriction) + ":\\/"));
         assertEquals("*:*", solrQuery.get("q"));
     }
 

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTestIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTestIT.java?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTestIT.java (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrIndexQueryTestIT.java Tue Jul 28 07:10:01 2015
@@ -296,20 +296,27 @@ public class SolrIndexQueryTestIT extend
     public void testRepSimilarXPathQuery() throws Exception {
         String query = "//element(*, nt:base)[rep:similar(., '/test/a')]";
         Tree test = root.getTree("/").addChild("test");
-        test.addChild("a").setProperty("text", "Hello World Hello World");
-        test.addChild("b").setProperty("text", "Hello World");
-        test.addChild("c").setProperty("text", "World");
-        test.addChild("d").setProperty("text", "Hello");
-        test.addChild("e").setProperty("text", "World");
-        test.addChild("f").setProperty("text", "Hello");
-        test.addChild("g").setProperty("text", "World");
-        test.addChild("h").setProperty("text", "Hello");
+        test.addChild("a").setProperty("text", "the quick brown fox jumped over the lazy white dog");
+        test.addChild("b").setProperty("text", "I am a dog");
+        test.addChild("c").setProperty("text", "dogs don't hurt");
+        test.addChild("d").setProperty("text", "white men can't jump");
+        test.addChild("e").setProperty("text", "the fox is brown");
+        test.addChild("f").setProperty("text", "a quickest dog jumped over the quick white dog");
+        test.addChild("g").setProperty("text", "hello world");
+        test.addChild("h").setProperty("text", "over the lazy top");
         root.commit();
         Iterator<String> result = executeQuery(query, "xpath").iterator();
         assertTrue(result.hasNext());
         assertEquals("/test/b", result.next());
         assertTrue(result.hasNext());
-        assertEquals("/test/c", result.next());
+        assertEquals("/test/d", result.next());
+        assertTrue(result.hasNext());
+        assertEquals("/test/e", result.next());
+        assertTrue(result.hasNext());
+        assertEquals("/test/f", result.next());
+        assertTrue(result.hasNext());
+        assertEquals("/test/h", result.next());
+        assertFalse(result.hasNext());
     }
 
     @Test

Modified: jackrabbit/oak/branches/1.2/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml?rev=1693006&r1=1693005&r2=1693006&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml (original)
+++ jackrabbit/oak/branches/1.2/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml Tue Jul 28 07:10:01 2015
@@ -126,11 +126,12 @@
         <field name="path_des" type="descendent_path" indexed="true" stored="false"/>
         <field name="ignored" type="ignored" />
         <field name="catch_all" type="text_general" indexed="true" stored="false" multiValued="true" termVectors="true"/> <!-- term vectors used for rep:similar -->
-        <field name="_version_" type="long" indexed="true" stored="true"/>
         <field name=":path" type="string" indexed="true" stored="false"/>
         <field name=":indexed" type="tdate" indexed="true" stored="false" default="NOW" docValues="true"/>
         <field name=":suggest-weight" type="tint" indexed="false" stored="false" default="1"  docValues="true"/>
         <field name=":suggest" type="string" indexed="true" stored="true" multiValued="true" />
+        <field name="path_collapsed" type="string" indexed="true" stored="true"/>
+        <field name="_version_" type="long" indexed="true" stored="true"/>
 
         <!-- sorting dynamic fields -->
         <dynamicField name="*_double_sort" type="tdouble" indexed="false" stored="false" multiValued="false" docValues="true"/>