Как запросить зайца для одноименных братьев и сестер
Можно ли найти одноуровневых братьев и сестер ( SNS) с помощью JCR-SQL2, JCR-SQL или QueryBuilder в Adobe CQ5/Adobe Experience Manager. Я пытаюсь сопоставить эти узлы с запросом, имеющим следующие критерии, без необходимости обходить весь репозиторий (медленная и длительная операция):
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].
1 ответ
Adobe опубликовала полезную статью для этого на:
https://helpx.adobe.com/experience-manager/kb/find-sns-nodes.html
РЕДАКТИРОВАТЬ: один запрос для этого может быть, как показано ниже:
SELECT [jcr:path] FROM [nt:base] WHERE ISDESCENDANTNODE('/') AND [jcr:path] like '%\]'
Идея состоит в том, что дубовые запросы смогут найти индексированные узлы, которые были перенесены с помощью логики разрешения SNS. Эти имена будут содержать ]
в их именах (пути для URI), которые можно будет выбрать с помощью вышеуказанного запроса.
Используйте этот запрос с осторожностью, так как у многих системных узлов OOTB есть] в имени, и это сделано специально.
Ты можешь измениться [nt:base]
к другим соответствующим индексам дуба для лучшей фильтрации.
НТН