2013-09-23 30 views
0

這是我的代碼:不能創建在solrj核心與embeddedsolrserver

File home = new File(System.getProperty("solr.solr.home")); 
     CoreContainer container = new CoreContainer(home.getAbsolutePath()); 
     CoreAdminRequest.Create create = new CoreAdminRequest.Create(); 
     create.setCoreName("newCoreName"); 
     create.setCoreNodeName("newCoreName"); 
     create.setAction(CoreAdminAction.CREATE); 
     create.setInstanceDir(home.getAbsolutePath()); 
     create.process(new EmbeddedSolrServer(container, "")); 

當我跑,我得到「沒有這樣的核心:‘’」異常。 如果我將其更改爲:

create.process(new EmbeddedSolrServer(container, "newCoreName")); 

我得到 「沒有這樣的核心: 」newCoreName「」 異常。

請幫我...

回答

0

我們發現有建立一個核心需要兩件事情: 1)必須有一個核心默認 2)目錄中用於新核心應該被創建。

的solr.xml是如下:

<?xml version="1.0" encoding="UTF-8" ?> 
<solr persistent="false"> 
    <cores defaultCoreName="empty" adminPath="/admin/cores"> 
    <core instanceDir="empty/" name="empty"/> 
    </cores> 
</solr> 

要創建一個新的核心做到以下幾點:

File home = new File(scfg.getIndexHome()); 
File solr = new File(home, "solr.xml"); 
String corename = "newcore"; 
CoreContainer container = new CoreContainer(home, solr); 
//create the directory 
File f = new File(home, corename); f.mkdirs(); 
SolrServer server = new EmbeddedSolrServer(container, "empty"); //default 
//create the core 
CoreAdminRequest.createCore(corename, corename, server, "solrconfig.xml", "schema.xml"); 
//persist it in the solr.xml 
CoreAdminRequest.persist("solr.xml", server); 
SolrServer servernew = new EmbeddedSolrServer(container, corename);