【发布时间】:2016-09-24 07:35:05
【问题描述】:
我使用的是最新的 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 索引器?
【问题讨论】:
-
我不明白你为什么首先使用“buildonly”(这实际上是一个已弃用的 Lucene)?
-
我知道它已被弃用,只有当我提到“buildonly”作为索引器时,我才能搜索我创建的属性(如问题中所述)
-
意思,如果你用SOLR你找不到文件?您收到错误消息,还是根本找不到文档?
-
我没有收到任何错误,结果集为空