2017-09-21 14 views
0

私はsolrjを使って新しいコアを作成しようとしています。私は私のアプリのテストを準備するために必要です。私はこのコードが不完全であるか間違っていると思います。なぜなら、「コアの候補はありません」というエラーが発生するたびにです。solrjで新しいコアを作成するには

package com.itsystems.talentapp.config; 

import org.apache.solr.client.solrj.SolrClient; 
import org.apache.solr.client.solrj.SolrServerException; 
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; 
import org.apache.solr.client.solrj.request.CoreAdminRequest; 
import org.apache.solr.client.solrj.response.CoreAdminResponse; 
import org.apache.solr.core.CoreContainer; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Profile; 

import java.io.IOException; 

@Configuration 
public class SolrConfig { 

    @Autowired 
    SolrClient solrClient; 


    @Bean 
    @Profile("test") 

    public EmbeddedSolrServer embeddedSolrServer() throws IOException, SolrServerException { 
     String folder = "src/main/resources/solr/"; 
     String coreName = "candidates"; 

     CoreAdminResponse e = new CoreAdminRequest().createCore(coreName, folder, solrClient); 
     CoreContainer container = new CoreContainer(folder); 
     container.load(); 
     return new EmbeddedSolrServer(container, "candidates"); 
    } 
} 

エラー:

org.apache.solr.common.SolrException: No such core: candidates 

バージョン:

<dependency> 
     <groupId>org.apache.solr</groupId> 
     <artifactId>solr-core</artifactId> 
     <version>6.6.1</version> 
</dependency> 
+0

は、このディレクトリ 'SRC /メイン/リソース/ Solrの/'コアと呼ばれる候補が含まれているとい – Gautam

+0

最初に新しいコアを作成したいから:-) – SerSergious

+0

上記のコードでは、コアをロードしていて、作成していません。コアには設定が必要ですが、これはあなたのケースではありません。実行時にコアを作成する場合は、CoreAdminRequestを使用してコアをロードしてからロードしてください。 – Gautam

答えて

0

私はいくつかのファイルとCFGを逃しました。 正しいコード:?

@Bean 
public SolrClient solrClient() throws IOException, SolrServerException { 
    String folder = "src/main/resources/solr/"; 
    String coreName = "candidates"; 
    CoreContainer container = new CoreContainer(folder); 
    container.load(); 
    return new EmbeddedSolrServer(container, coreName); 
}