Как найти узел по имени в adobe cq5

Я пытаюсь найти лучший способ получить узел в репозитории по его имени. Я могу убедиться, что в репозитории не будет двух узлов с одинаковым именем.

Я могу написать рекурсивный код для получения узла по имени, но это может снизить производительность системы, если мой узел находится в корне --> уровень 1000 --> уровень 1k.

если Adobe CQ5 (CRX) предоставляет какой-либо API, чтобы сделать то же самое?


person sandeep kumar    schedule 22.01.2014    source источник
comment
Вы определенно можете использовать запрос, как указано в ответе Томека ниже, но мне кажется, что вы делаете что-то странное, если вам нужно вытащить случайный узел (не говоря уже о странице), который имеет глубину 1000 уровней - вы действительно не можете сузить область поиска на основе иерархии? Вы определенно должны стремиться структурировать иерархию соответствующим образом, если это вообще возможно.   -  person anotherdave    schedule 22.01.2014
comment
Во-первых, я действительно не понимаю, что вы имеете в виду, поддерживая здесь иерархию. хотя я создаю четко определенную структуру узлов и мне нужно искать случайный узел, я думаю, что запрос сработает для меня. ???   -  person sandeep kumar    schedule 23.01.2014
comment
Запрос всей базы данных будет работать, если вы действительно не можете организовать свое дерево контента, чтобы избежать этого. Все, что я имел в виду, это то, что, конечно, это будет медленнее, если вам придется искать на каждом уровне во всех частях репо.   -  person anotherdave    schedule 23.01.2014


Ответы (1)


Используйте запрос JCR:

String query = "SELECT * FROM [nt:base] AS s WHERE NAME(s) = '%s'";
resourceResolver.findResources(String.format(query, "node-name"), "JCR-SQL2");
person Tomek Rękawek    schedule 22.01.2014
comment
Работает отлично. Потрясающий!! - person Oliver; 19.06.2014
comment
@Tomek, есть ли способ, с помощью которого я могу искать узлы, начиная строку с их именем. Я хочу искать все узлы по заданному пути, начиная с КБ, каким должен быть запрос. Я пытался использовать like и localname() , %, но это не сработало. Примеры узлов: KB1234.KBAB56,KBCH578. Как я могу искать все узлы, чье имя начинается с KB от XPATH. я использовал этот запрос SELECT * FROM [nt: unstructured] As node WHERE ISDESCENDANTNODE ([/etc/commerce/products/flr]) AND NAME(node) = 'KB%' - person user2142786; 24.01.2017