jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jukka Zitting <jzitt...@adobe.com>
Subject Re: XPATH to JCR-SQL2 Query translation
Date Tue, 30 Nov 2010 16:55:46 GMT

On 26/11/10 16:36, Juan Diego Botiva Leon wrote:
> I'm upgrading Jackrabbit from 1.6.1 to 2.1.1 and I need to translate
> an XPath query to JCR-SQL2, the query is as follows:
> /jcr:root/some_node//element(*,
> mynt:document)[jcr:contains(jcr:content, 'textToFind')]
> I tried the following (removing the path constraint because I
> couldn't find how to do it)
> SELECT * FROM [mynt:document] AS doc WHERE CONTAINS(doc.*,
> 'textToFind')
> But I get no results and the original query returns 23 nodes. Can you
> help me with this as I checked the JCR 2.0 SQL-2 Grammar (Railroad
> diagrams) and the jackrabbit-spi-commons test cases but still I'm not
> sure how to use CONTAINS and how to restrict the query to a specific
> path. Thanks in advance.

You can use the ISDESCENDANTNODE constraint [1] in SQL2 to limit your 
query to a specific subtree.

Note that this constraint is slightly different from the 
descendant-or-self axis ("//") in XPath, as it doesn't match the 
ancestor node under which you're querying. To duplicate the 
descendant-or-self axis functionality in SQL2 you can combine 
ISDESCENDANTNODE and ISSAMENODE [2] constraints like this:

     SELECT * FROM [mynt:document]
     WHERE ISDESCENDANTNODE('/some_node') OR ISSAMENODE('/some_node')

Can you please try the SQL2 query with the latest Jackrabbit snapshot to 
see if you're still having problem getting the same results as with the 
XPath query? Full text queries with SQL2 should work much better now 
with the JCR-2715 improvements.

[1] http://www.day.com/specs/jcr/2.0/6_Query.html#DescendantNode
[2] http://www.day.com/specs/jcr/2.0/6_Query.html#SameNode


Jukka Zitting

View raw message