2017-09-21 3 views
0

J'essaie de créer un nouveau noyau en utilisant solrj. J'en ai besoin pour préparer le test pour mon application. Je pense que ce code est incomplet ou faux parce que chaque fois que j'ai eu une erreur "pas de candidats de base".Comment créer un nouveau noyau dans 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"); 
    } 
} 

Erreur:

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

Version:

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

Est-ce que ce répertoire 'src/main/resources/Solr /' contenir le coeur appelé candidat? – Gautam

+0

Non contenu parce que je veux d'abord créer un nouveau noyau :-) – SerSergious

+0

Dans le code ci-dessus, vous chargez un noyau, pas en créer un. Un core nécessite une configuration pour être présent, ce qui n'est pas dans votre cas. Si vous voulez créer des cœurs lors de l'exécution, utilisez 'CoreAdminRequest' pour créer le noyau en premier avant de le charger. – Gautam

Répondre

0

J'ai raté quelques fichiers et CFG. code correct:

@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); 
}