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) {