Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DAE9BCCE3 for ; Wed, 17 Jul 2013 13:11:56 +0000 (UTC) Received: (qmail 94795 invoked by uid 500); 17 Jul 2013 13:11:56 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 94776 invoked by uid 500); 17 Jul 2013 13:11:56 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 94768 invoked by uid 99); 17 Jul 2013 13:11:55 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Jul 2013 13:11:55 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Jul 2013 13:11:52 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A5730238897A; Wed, 17 Jul 2013 13:11:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1504114 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ oak-jcr/ oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/ oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/ Date: Wed, 17 Jul 2013 13:11:31 -0000 To: oak-commits@jackrabbit.apache.org From: thomasm@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130717131131.A5730238897A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: thomasm Date: Wed Jul 17 13:11:31 2013 New Revision: 1504114 URL: http://svn.apache.org/r1504114 Log: OAK-890 Query: advanced fulltext search conditions Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java jackrabbit/oak/trunk/oak-jcr/pom.xml jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.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=1504114&r1=1504113&r2=1504114&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 Wed Jul 17 13:11:31 2013 @@ -64,11 +64,17 @@ public class FullTextSearchImpl extends propertyName = propertyName.substring(slash + 1); } + // temporary workaround to support using an index for + // "contains(a/*, 'x') or contains(a/a, x') or contains(a/b, 'x')" + // TODO this behavior does not match the specification + propertyName = null; + if (propertyName == null || "*".equals(propertyName)) { this.propertyName = null; } else { this.propertyName = propertyName; } + this.fullTextSearchExpression = fullTextSearchExpression; } @@ -91,14 +97,11 @@ public class FullTextSearchImpl extends if (propertyName == null) { propertyName = "*"; } + if (relativePath != null) { propertyName = relativePath + "/" + propertyName; } - // temporary workaround to support using an index for - // "contains(*, 'x') or contains(a, x') or contains(b, 'x')" - // propertyName = "*"; - builder.append(quote(propertyName)); builder.append(", "); builder.append(getFullTextSearchExpression()); Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1504114&r1=1504113&r2=1504114&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/pom.xml (original) +++ jackrabbit/oak/trunk/oak-jcr/pom.xml Wed Jul 17 13:11:31 2013 @@ -314,6 +314,8 @@ org.apache.jackrabbit.core.query.DerefTest#testRewrite org.apache.jackrabbit.core.query.DerefTest#testDerefToVersionNode org.apache.jackrabbit.core.query.DerefTest#testMultipleDeref + org.apache.jackrabbit.core.query.FulltextQueryTest#testContainsPropScopeSQL + org.apache.jackrabbit.core.query.FulltextQueryTest#testContainsPropScopeXPath org.apache.jackrabbit.core.query.XPathAxisTest#testIndex0Descendant org.apache.jackrabbit.core.query.XPathAxisTest#testIndex1Descendant org.apache.jackrabbit.core.query.XPathAxisTest#testIndex2Descendant Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java?rev=1504114&r1=1504113&r2=1504114&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java Wed Jul 17 13:11:31 2013 @@ -42,7 +42,7 @@ public class QueryFulltextTest extends A } @Test - public void fulltext() throws Exception { + public void fulltextOrWithinText() throws Exception { Session session = getAdminSession(); QueryManager qm = session.getWorkspace().getQueryManager(); Node testRootNode = session.getRootNode().addNode("testroot"); @@ -61,7 +61,7 @@ public class QueryFulltextTest extends A q = qm.createQuery("explain " + sql2, Query.JCR_SQL2); assertEquals("[nt:base] as [nt:base] /* traverse \"*\" " + - "where contains([nt:base].[text], cast('hello OR hallo' as string)) */", + "where contains([nt:base].[*], cast('hello OR hallo' as string)) */", getResult(q.execute(), "plan")); // verify the result Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java?rev=1504114&r1=1504113&r2=1504114&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java (original) +++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java Wed Jul 17 13:11:31 2013 @@ -50,8 +50,8 @@ public class QueryFulltextTest extends A Query q; q = qm.createQuery("explain " + sql2, Query.JCR_SQL2); - assertEquals("[nt:base] as [nt:base] /* +text:{* TO *} +(+:fulltext:hello +:fulltext:or +:fulltext:hallo) " + - "where contains([nt:base].[text], cast('hello OR hallo' as string)) */", + assertEquals("[nt:base] as [nt:base] /* +:fulltext:hello +:fulltext:or +:fulltext:hallo " + + "where contains([nt:base].[*], cast('hello OR hallo' as string)) */", getResult(q.execute(), "plan")); // verify the result