【问题标题】:find nodes with a specific child association查找具有特定子关联的节点
【发布时间】:2016-12-06 14:28:20
【问题描述】:

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

一些上下文: abc:document 类型的文档有一个子关联 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;
            }
        }
        }

【问题讨论】:

    标签: lucene alfresco


    【解决方案1】:

    关联是不可查询的,因此您必须做您正在做的事情,这实际上是检查结果集中的每个节点是否存在所需的关联。

    我可以建议的唯一改进是您可以请求特定类型的子关联,这样您就不必检查每个子关联的类型,请参阅How to get all Child associations with a specific Association Type Alfresco (Java)

    【讨论】:

    • "关联不可查询..." - 是否适用于所有类型的关联:子关联、父关联和(简单)“关联”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2011-01-13
    • 1970-01-01
    • 2021-11-07
    • 2011-07-06
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多