如何查询jackrabbit jcr以获得按匹配数排序的节点(使用SQL2/XPATH)?
假设我将节点存储在Jackrabbit JCR存储库中,它们在其中附加了多个“标记”属性 我想执行一个or查询,在该查询中,将返回具有带有查询中任何标记的标记的任何节点。但我要按匹配的数量排序。因此,所有或条件匹配的节点将位于顶部,而仅匹配一个的节点将位于最后 我想这和这里的建议是一样的: 但顺便说一句,我们在SQL2中没有CASE构造。我也不知道XPATH中有任何等价的东西如何查询jackrabbit jcr以获得按匹配数排序的节点(使用SQL2/XPATH)?,xpath,jcr,jackrabbit,jcr-sql2,Xpath,Jcr,Jackrabbit,Jcr Sql2,假设我将节点存储在Jackrabbit JCR存储库中,它们在其中附加了多个“标记”属性 我想执行一个or查询,在该查询中,将返回具有带有查询中任何标记的标记的任何节点。但我要按匹配的数量排序。因此,所有或条件匹配的节点将位于顶部,而仅匹配一个的节点将位于最后 我想这和这里的建议是一样的: 但顺便说一句,我们在SQL2中没有CASE构造。我也不知道XPATH中有任何等价的东西 那么,我如何实现相同的结果(除了应用程序级别的后处理,由于性能问题,我更希望避免这种情况)。我希望这将有助于您执行查询
那么,我如何实现相同的结果(除了应用程序级别的后处理,由于性能问题,我更希望避免这种情况)。我希望这将有助于您执行查询: public FolderListReturn listFolder(字符串parentNode、字符串userid、字符串密码){ System.out.println(“从用户“+userid”的“+parentNode+”获取文件夹和文件) }
SessionWrapper sessions =JcrRepositoryUtils.login(userid, password);
Session jcrsession = sessions.getSession();
Assert.notNull(name);
FolderListReturn folderList1 = new FolderListReturn();
ArrayOfFolders folders = new ArrayOfFolders();
try {
javax.jcr.query.QueryManager queryManager;
queryManager = jcrsession.getWorkspace().getQueryManager();
**String expression = "select * from [nt:folder] AS s WHERE ISCHILDNODE(s,'"+name+"')and CONTAINS(s.[edms:owner],'*"+userid+"*') ORDER BY s.["+Config.EDMS_Sorting_Parameter+"] ASC";**
javax.jcr.query.Query query = queryManager.createQuery(expression, javax.jcr.query.Query.JCR_SQL2);
javax.jcr.query.QueryResult result = query.execute();
for (NodeIterator nit = result.getNodes(); nit.hasNext();) {
Node node = nit.nextNode();
Folder folder = new Folder();
folder=setProperties(node,folder,userid,password,jcrsession,name);
folders.getFolderList().add(folder);
}
folderList1.setFolderListResult(folders);
folderList1.setSuccess(true);
} catch (Exception e) {
e.printStackTrace();
}finally{
//JcrRepositoryUtils.logout(sessionId);
}
return folderList1;