如何在 Jackrabbit 中查询同名兄弟姐妹

How to Query Jackrabbit for same name siblings

是否可以在 Adob​​e CQ5/Adobe Experience Manager 中使用 JCR-SQL2、JCR-SQL 或 QueryBuilder 找到同名兄弟姐妹 (SNS) .我正在尝试将这些节点与具有以下条件的查询相匹配,而不必遍历整个存储库(缓慢而漫长的 运行 操作):

if(node.getIndex() > 1) {
  // this node is matching the SNS criteria
}

SNS定义如下:

/a/b/c
/a/b/c[2]
/a/b/c[3]

/a/b[2]/c[2]
/a/b/c[3]

/a/d/f
/a/d/f[2]

所以查询的结果应该包括/a/b/c[2],/a/b/c[3],/a/b[2]/c[2],/a/b/c [3], /a/d/f[2].

Adobe 在以下位置发布了一篇对此很有帮助的文章:

https://helpx.adobe.com/experience-manager/kb/find-sns-nodes.html

编辑:对此的一个查询可能如下所示:

SELECT [jcr:path] FROM [nt:base] WHERE ISDESCENDANTNODE('/') AND [jcr:path] like '%\]'

想法是 oak 查询将能够找到通过 SNS 解析逻辑迁移的索引节点。这些名称将在其名称(URI 的路径)中包含 ],可通过上述查询进行选择。

Use this query with caution as there are a lot of system nodes OOTB that have ] in the name and this is by design.

您可以将[nt:base]更改为其他相关的橡木索引以更好地过滤。

HTH