查找具有特定子关联的节点

Tho*_*asS 1 lucene alfresco

我正在寻找一个查询(lucene、fts-alfresco 或 ...)来返回所有具有特定子关联(不为空)的文档。

一些上下文: 类型的文档abc:document有一个 child-association abc:linkedDocument。并非所有文件都有其他文件链接到它们,有些文件没有,有些文件有一个或多个。

我需要一种快速简便的方法来概览所有至少有一个文档链接到它们的文档。

目前我有一个 webscript 可以满足我的需求,但不想拥有大量与业务无关的 webscript。

代码:

        SearchParameters sp = new SearchParameters();
        String query = "TYPE:\"abc:document\"";
        StoreRef store = StoreRef.STORE_REF_WORKSPACE_SPACESSTORE;
        sp.addStore(store);
        sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
        sp.setQuery(query);

        ResultSet rs = services.getSearchService().query(sp);
        List<NodeRef> nodeRefs = rs.getNodeRefs();
        for (NodeRef ref : nodeRefs) {
            List<ChildAssociationRef> refs = services.getNodeService().getChildAssocs(ref);
            for(ChildAssociationRef chref : refs){
            if(chref.getQName().equals(AbcModel.ASSOC_LINKED_DOC)){
                logger.debug("Document with linked doc: {}", ref);
                break;
            }
        }
        }
Run Code Online (Sandbox Code Playgroud)

Jef*_*tts 5

关联不可查询,因此您必须执行您正在执行的操作,这实质上是检查结果集中的每个节点是否存在所需关联。

我可以建议的唯一改进是您可以要求特定类型的子关联,这将阻止您检查每个子关联的类型,请参阅如何获取具有特定关联类型的所有子关联 Alfresco (Java)