Osgi 如何在adobe cq5中按名称查找节点

Osgi 如何在adobe cq5中按名称查找节点,osgi,aem,jcr,osgi-bundle,sling,Osgi,Aem,Jcr,Osgi Bundle,Sling,我正在试图找到通过名称获取存储库中节点的最佳方法。我可以确保存储库中没有两个节点具有相同的名称 我可以编写递归代码以按名称获取节点,但如果我的节点位于根-->级别1000-->级别1k,则会降低系统性能 如果Adobe CQ5(CRX)提供任何api来执行相同的操作?使用JCR查询: String query = "SELECT * FROM [nt:base] AS s WHERE NAME(s) = '%s'"; resourceResolver.findResources(String.f

我正在试图找到通过名称获取存储库中节点的最佳方法。我可以确保存储库中没有两个节点具有相同的名称

我可以编写递归代码以按名称获取节点,但如果我的节点位于根-->级别1000-->级别1k,则会降低系统性能

如果Adobe CQ5(CRX)提供任何api来执行相同的操作?

使用JCR查询:

String query = "SELECT * FROM [nt:base] AS s WHERE NAME(s) = '%s'";
resourceResolver.findResources(String.format(query, "node-name"), "JCR-SQL2");
使用JCR查询:

String query = "SELECT * FROM [nt:base] AS s WHERE NAME(s) = '%s'";
resourceResolver.findResources(String.format(query, "node-name"), "JCR-SQL2");

根据下面托梅克的回答,你当然可以使用一个查询,但对我来说,如果你需要拉出一个1000层深的随机节点(更不用说一个页面),你会觉得你在做一些奇怪的事情——你真的不能根据层次缩小搜索范围吗?如果可能的话,你一定要把目标定在适当的层次结构上。首先,我真的不明白你在这里维护层次结构是什么意思。即使我正在创建一个定义良好的节点结构,并且需要搜索随机节点,那么我认为查询对我来说是可行的???如果您确实无法组织内容树以避免它,那么查询整个数据库将起作用。我的意思是,如果你必须在回购协议的所有部分的每一个级别上进行搜索,那么搜索速度当然会变慢。根据下面托梅克的回答,你肯定可以使用查询,但对我来说,如果你需要拉出一个随机节点(更不用说一个页面),你会觉得自己在做一些奇怪的事情这是1000级的深度-你真的不能缩小你的搜索基于层次?如果可能的话,你一定要把目标定在适当的层次结构上。首先,我真的不明白你在这里维护层次结构是什么意思。即使我正在创建一个定义良好的节点结构,并且需要搜索随机节点,那么我认为查询对我来说是可行的???如果您确实无法组织内容树以避免它,那么查询整个数据库将起作用。我的意思是,如果你必须在回购协议的所有部分的每一个层面上进行搜索,那么它当然会变慢。工作非常完美。太棒了@Tomek,有没有办法通过启动该名称的字符串来搜索节点。我想从KB开始搜索给定路径下的所有节点,查询应该是什么。我尝试使用like和localname(),%,但不起作用。示例节点是KB1234.KBAB56和KBCH578。如何从XPATH中搜索名称从KB开始的所有节点。我使用了这个查询SELECT*FROM[nt:unstructured]作为节点,其中isDescendatNode([/etc/commerce/products/flr])和NAME(node)='KB%'非常有效。太棒了@Tomek,有没有办法通过启动该名称的字符串来搜索节点。我想从KB开始搜索给定路径下的所有节点,查询应该是什么。我尝试使用like和localname(),%,但不起作用。示例节点是KB1234.KBAB56和KBCH578。如何从XPATH中搜索名称从KB开始的所有节点。我使用了这个查询SELECT*FROM[nt:unstructured]作为节点,其中isDescendatNode([/etc/commerce/products/flr])和NAME(node)='KB%'