我使用的是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索引器?
答案 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
除此之外,检查节点是否已被索引。如果有,请仔细查看如何构建查询。