2015-06-26 3 views
0

Скажем, у меня есть узлы, хранящиеся в репозитории Jabrabbit JCR, где у них есть несколько добавленных свойств тега.Как запросить jabrabbit jcr для получения узлов, упорядоченных по количеству совпадений (с использованием SQL2/XPATH)?

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

Я думаю, что это так же, как это предложение здесь: https://stackoverflow.com/a/3289152/303106

Но AFAIK, мы не имеем СЛУЧАЙ конструкций в SQL2. Я также не знаю ничего эквивалентного в XPATH.

Как я могу достичь того же результата (кроме пост-обработки на уровне приложения, который я бы предпочел избежать из-за проблем с производительностью).

ответ

0

Я надеюсь, что это поможет вам выполнить запрос:

общественного FolderListReturn listFolder (String ParentNode, String идентификатор, String пароль) { System.out.println ("получение папок и файлов из =" + ParentNode + "пользователя:" + userid);

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; 

}

 Смежные вопросы

  • Нет связанных вопросов^_^