我正在使用最新版本的alfresco 5.1版本。 我的要求之一是創建屬性(鍵/值),其中用戶輸入密鑰以及值。alfresco buildonly indexer用於搜索即時創建的屬性
,所以我已經做了這樣的
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的)擺在首位? – Lista
我知道它已棄用,只有如果我提到「構建」作爲索引器,我可以搜索我已創建的屬性(如問題中指定的) –
意思是,如果使用SOLR去找不到文檔?你是否遇到錯誤,或者找不到文件? – Lista