我正在使用最新版本的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索引器?

最佳答案

在您的查询中String query = "@cm\\:customProp1:\"prop1\"";即时创建QName时,请删除 cm ,这样它就不会出现在cm(即(ContentModel)属性)下。所以您的查询将是

String query = "@\\:customProp1:\"prop1\"";

希望这对你有用

10-07 16:24
查看更多