alfresco buildonly indexer,用于搜索动态创建的属性

时间:2016-09-24 07:35:05

标签: java solr alfresco

我使用的是alfresco 5.1版本的最新版本。 我的一个要求是创建属性(键/值),用户输入键和值。

所以我这样做了

    Map<QName, Serializable> props = new HashMap<QName, Serializable>();
    props.put(QName.createQName("customProp1"), "prop1");
    props.put(QName.createQName("customProp2"), "prop2");
    ChildAssociationRef associationRef = nodeService.createNode(nodeService.getRootNode(storeRef), ContentModel.ASSOC_CHILDREN, QName.createQName(GUID.generate()), ContentModel.TYPE_CMOBJECT, props);

现在我想做的是使用这些新创建的属性搜索节点。我能够像这样搜索新创建的属性。

public List<NodeRef> findNodes() throws Exception {
    authenticate("admin", "admin");
    StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore");
    List<NodeRef> nodeList = null;
    Map<QName, Serializable> props = new HashMap<QName, Serializable>();
    props.put(QName.createQName("customProp1"), "prop1");
    props.put(QName.createQName("customProp2"), "prop2");
    ChildAssociationRef associationRef = nodeService.createNode(nodeService.getRootNode(storeRef), ContentModel.ASSOC_CHILDREN, QName.createQName(GUID.generate()), ContentModel.TYPE_CMOBJECT, props);
    NodeRef nodeRef = associationRef.getChildRef();
    String query = "@cm\\:customProp1:\"prop1\"";
    SearchParameters sp = new SearchParameters();
    sp.addStore(storeRef);
    sp.setLanguage(SearchService.LANGUAGE_LUCENE);
    sp.setQuery(query);
    try {
        ResultSet results = serviceRegistry.getSearchService().query(sp);
        nodeList = new ArrayList<NodeRef>();
        for (ResultSetRow row : results) {
            nodeList.add(row.getNodeRef());
            System.out.println(row.getNodeRef());
        }
        System.out.println(nodeList.size());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return nodeList;
}

alfresco-global.properties索引器配置

index.subsystem.name=buildonly
index.recovery.mode=AUTO
dir.keystore=${dir.root}/keystore

现在我的问题是

使用solr4索引器是否可以实现相同的目标? 或者有没有办法为特定查询使用buildonly索引器?

2 个答案:

答案 0 :(得分:1)

在您的查询中 String query = "@\\:customProp1:\"prop1\""; 在动态构建QName时删除 cm ,因此它不属于cm即(ContentModel)属性。所以你的查询将是

{{1}}

希望这对你有用

答案 1 :(得分:0)

首先,仔细检查您是否只是遇到最终一致性,如下所述。如果您这样做,如果这对您造成问题,请考虑在留在SOLR时切换到CMIS查询。

http://docs.alfresco.com/5.1/concepts/solr-event-consistency.html

除此之外,检查节点是否已被索引。如果有,请仔细查看如何构建查询。

How to find List of unindexed file in alfresco