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 al...@apache.org on 2013/08/27 11:48:28 UTC

svn commit: r1517768 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java

Author: alexparvulescu
Date: Tue Aug 27 09:48:27 2013
New Revision: 1517768

URL: http://svn.apache.org/r1517768
Log:
OAK-828 Full-text support for index aggregates


Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java?rev=1517768&r1=1517767&r2=1517768&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java Tue Aug 27 09:48:27 2013
@@ -133,15 +133,20 @@ public class FullTextSearchImpl extends 
         builder.append(')');
         return builder.toString();
     }
-    
+
     @Override
     public Set<PropertyExistenceImpl> getPropertyExistenceConditions() {
         if (propertyName == null) {
             return Collections.emptySet();
         }
+        // makes no sense in applying a property existence constrain when that
+        // property is on a different node
+        if (relativePath != null) {
+            return Collections.emptySet();
+        }
         return Collections.singleton(new PropertyExistenceImpl(selector, selectorName, propertyName));
     }
-    
+
     @Override
     public FullTextExpression getFullTextConstraint(SelectorImpl s) {
         if (s != selector) {

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java?rev=1517768&r1=1517767&r2=1517768&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java Tue Aug 27 09:48:27 2013
@@ -41,6 +41,8 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 
 public class LuceneIndexAggregationTest extends AbstractQueryTest {
 
@@ -74,9 +76,9 @@ public class LuceneIndexAggregationTest 
      * 
      */
     private static NodeAggregator getNodeAggregator() {
-        return new SimpleNodeAggregator()
-            .newRuleWithName(NT_FILE, newArrayList(JCR_CONTENT, JCR_CONTENT + "/*"))
-            .newRuleWithName(NT_FOLDER, newArrayList("myFile"));
+        return new SimpleNodeAggregator().newRuleWithName(NT_FILE,
+                newArrayList(JCR_CONTENT, JCR_CONTENT + "/*")).newRuleWithName(
+                NT_FOLDER, newArrayList("myFile"));
     }
 
     /**
@@ -221,6 +223,9 @@ public class LuceneIndexAggregationTest 
 
         String matchNone = " //element(*, nt:folder)[(jcr:contains(myFile, 'invalid') or jcr:contains(myFile/@jcr:title, 'invalid') or jcr:contains(myFile/@jcr:description, 'invalid'))]";
         assertQuery(matchNone, "xpath", new ArrayList<String>());
+
+        String matchOnlyTitleOr = " //element(*, nt:folder)[(jcr:contains(myFile/@jcr:title, 'title') or jcr:contains(myFile/@jcr:title, 'unknown') )]";
+        assertQuery(matchOnlyTitleOr, "xpath", ImmutableList.of("/myFolder"));
     }
 
 }