Как запросить зайца для одноименных братьев и сестер

Можно ли найти одноуровневых братьев и сестер ( 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] к другим соответствующим индексам дуба для лучшей фильтрации.

НТН

Другие вопросы по тегам