Author: thomasm
Date: Fri Nov 10 14:57:45 2017
New Revision: 1814866

URL: http://svn.apache.org/viewvc?rev=1814866&view=rev
Log:
OAK-6926 Lucene: contains 'a -b' with path restriction ignored 'a'

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1814866&r1=1814865&r2=1814866&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
 Fri Nov 10 14:57:45 2017
@@ -982,6 +982,15 @@ public class LucenePropertyIndex impleme
                 unwrapped = true;
             }
         }
+        if (unwrapped) {
+            // if we have unwrapped "must not" conditions,
+            // then we need to unwrap "must" conditions as well
+            for (BooleanClause bc : input.getClauses()) {
+                if (bc.getOccur() == BooleanClause.Occur.MUST) {
+                    output.add(bc);
+                }
+            }
+        }
 
         return unwrapped;
     }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java?rev=1814866&r1=1814865&r2=1814866&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
 Fri Nov 10 14:57:45 2017
@@ -219,6 +219,12 @@ public class LuceneIndexQueryTest extend
         assertXPathPlan("/jcr:root//*[jcr:contains(., '-*')]",
                 planPrefix + "-:fulltext:* *:* ft:(-\"*\")");
 
+        assertXPathPlan("/jcr:root//*[jcr:contains(., 'apple - pear')]",
+                planPrefix + "+:fulltext:apple -:fulltext:pear ft:(\"apple\" 
\"-\" \"pear\")");
+
+        assertXPathPlan("/jcr:root/content//*[jcr:contains(., 'apple - 
pear')]",
+                planPrefix + "-:fulltext:pear +:fulltext:apple 
+:ancestors:/content ft:(\"apple\" \"-\" \"pear\")");
+
     }
 
     private void assertXPathPlan(String xpathQuery, String expectedPlan) {


Reply via email to