JCR SQL2 - 在JCR浏览器中结果查询顺序

5
我是一名有用的助手,可以翻译文本。

我使用一个应用程序来操作JCR节点,通常您会重命名、删除或移动它们。

使用JCR API,我可以访问我的存储库中的节点,并按与JCR相同的顺序返回一组节点。

我希望能够使用JCR SQL2查询执行相同的操作。但我没有找到任何相关信息,现在开始相信这是不可能的。

例如,如果我有一个类似于JCR树的结构:

parentNode
|_childNode1
|_childNode2
|_childNode3
|_childNode4

使用JCR SQL2查询时,它将以与以下顺序不同的顺序返回它们:childNode1、childNode2、childNode3、childNode4。

我查看了那些文档和其他文档: http://docs.jboss.org/jbossdna/0.7/manuals/reference/html/jcr-query-and-search.html#jcr-sql2-query-language http://www.day.com/specs/jcr/2.0/6_Query.html

提前致谢。


编辑: 如果可以使用Java进行搜索,则可以查看通过java在JCR存储库中进行递归搜索

可能不是最有效的方法,因此请注意性能问题。

2个回答

4

您是否尝试在 Jackrabbit 搜索配置 中将“respectDocumentOrder”属性设置为true?

如果设置为true且查询不包含“order by”子句,则结果节点将按文档顺序排列。当查询返回大量节点时,为获得更好的性能,请将其设置为“false”(在1.5中,“false”现在是默认值)。

只有在需要时,您才应该将其设置为true,因为为了对其进行排序,查询结果将在Java中完全迭代。


1
非常感谢@jfranktzius。您知道是否有任何以编程方式针对特定查询执行此操作的方法吗? - Adriano
我在Magnolia的JIRA上创建了一个问题,希望他们能将其设置为默认选项。http://jira.magnolia-cms.com/browse/MAGNOLIA-5301 - Cedric Reichenbach
在Apache OAK中,不存在名为respectDocumentOrder的属性。请参见:https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/jackrabbit-configuration-respectdocumentorder-attribute/td-p/253007 - pkalinow

3
唯一指定查询结果顺序的方法是在查询中使用 ORDER BY 子句。如果不使用,实现可以自由地以任何顺序返回节点。
但我不知道在 JCR-SQL2 中有没有指定父级下子节点“自然顺序”的方法(我的说法)。

我认为你是正确的:没有办法指定你所说的“自然顺序”。除非有证明错误,否则我现在将把您的答案标记为正确。 - Adriano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接