2016-08-21 1 views
0

Ich habe einen Solr-Core mit Konfigurationen erstellt und wenn ich versuche, solr Embedded Server zu starten, bekomme ich den folgenden Fehler.Solr: Immer auf der Suche nach einem Core namens "collection1"

Caused by: java.io.IOException: Can't find resource 'solrconfig.xml' in 
classpath or '/home/tharindu/Desktop/solr_tmp/custom/newsportal/collection1/conf' 
    at org.apache.solr.core.SolrResourceLoader.openResource(SolrResourceLoader.java:362) 
    at org.apache.solr.core.SolrResourceLoader.openConfig(SolrResourceLoader.java:308) 
    at org.apache.solr.core.Config.<init>(Config.java:117) 
    at org.apache.solr.core.Config.<init>(Config.java:87) 
    at org.apache.solr.core.SolrConfig.<init>(SolrConfig.java:167) 
    at org.apache.solr.core.SolrConfig.readFromResourceLoader(SolrConfig.java:145) 
    ... 9 more 

Es scheint, dass es einen solr Kern namens collection1 standardmäßig zu finden versucht.

Die benutzerdefinierten Ordner enthalten,

-- solr.xml 
-- newsportal 
    -- conf 
     -- schema.xml 
     -- solrconfig.xml 
    -- core.properties 

I Frühling solr Vorlage bin mit. Die EmbeddedServer Konfiguration ist unten.

@Bean 
    public EmbeddedSolrServerFactoryBean solrServerFactoryBean() { 
     EmbeddedSolrServerFactoryBean factory = new EmbeddedSolrServerFactoryBean(); 
     factory.setSolrHome("/home/tharindu/Desktop/solr_tmp/custom/newsportal"); 
     return factory; 
    } 

    @Bean 
    public SolrTemplate solrTemplate() throws Exception { 
     return new SolrTemplate(solrServerFactoryBean().getObject(), "newsportal"); 
    } 

Wenn ich ändern, um die EmbeddedServer Bohne wie folgt (nur den Pfad des Gießkernauswechselabschnitt)

@Bean 
public EmbeddedSolrServerFactoryBean solrServerFactoryBean() { 
    EmbeddedSolrServerFactoryBean factory = new EmbeddedSolrServerFactoryBean(); 
    factory.setSolrHome("/home/tharindu/Desktop/solr_tmp/custom"); 
    return factory; 
} 

ich den unten Fehler.

Caused by: org.apache.solr.common.SolrException: No such core: 
    at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:112) 
    at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:91) 
    at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:301) 
    at org.springframework.data.solr.core.SolrTemplate$11.doInSolr(SolrTemplate.java:417) 
    at org.springframework.data.solr.core.SolrTemplate$11.doInSolr(SolrTemplate.java:414) 
    at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:141) 
    ... 59 more 

Aber wenn ich den Kern Ordner als collection1 umbenennen und Kernnamen in der zu name=collection1core.properties ändern, funktioniert alles einwandfrei.

Unten ist mein schema.xml und solrconfig.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<schema name="newsportal" version="1.5"> 
    <types> 
     <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 
     <fieldType name="text_general" class="solr.TextField" omitNorms="true"> 
      <analyzer> 
       <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.StopFilterFactory" words="stopwords_en.txt" /> 
      </analyzer> 
     </fieldType> 
    </types> 
    <fields> 
     <field name="id" type="string" indexed="true" stored="true" required="true"/> 

     <field name="title" type="text_general" indexed="true" stored="true" required="true" termVectors="true"/> 
     <field name="description" type="text_general" indexed="true" stored="true" required="true" termVectors="true"/> 

     <field name="keywords" type="text_general" indexed="true" stored="true" multiValued="true" /> 

     <defaultSearchField>keywords</defaultSearchField> 

     <copyField source="title" dest="keywords"/> 
     <copyField source="description" dest="keywords"/> 

    </fields> 

    <uniqueKey>id</uniqueKey> 
</schema> 

solrconfig.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<config> 
    <luceneMatchVersion>LUCENE_48</luceneMatchVersion> 
    <dataDir>${solr.data.dir:}</dataDir> 
    <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}" /> 
    <codecFactory class="solr.SchemaCodecFactory" /> 
    <schemaFactory class="ClassicIndexSchemaFactory" /> 
    <indexConfig> 
     <lockType>${solr.lock.type:native}</lockType> 
    </indexConfig> 
    <updateHandler class="solr.DirectUpdateHandler2"/> 
    <query> 
     <maxBooleanClauses>1024</maxBooleanClauses> 
     <filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0" /> 
     <queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0" /> 
     <documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0" /> 
     <enableLazyFieldLoading>true</enableLazyFieldLoading> 
     <queryResultWindowSize>20</queryResultWindowSize> 
     <queryResultMaxDocsCached>200</queryResultMaxDocsCached> 
     <useColdSearcher>false</useColdSearcher> 
     <maxWarmingSearchers>2</maxWarmingSearchers> 
    </query> 
    <requestDispatcher handleSelect="false"> 
     <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000" formdataUploadLimitInKB="2048" /> 
     <httpCaching never304="true" /> 
    </requestDispatcher> 
    <requestHandler name="/select" class="solr.SearchHandler" default="true"> 
     <lst name="defaults"> 
      <str name="sort">title asc</str> 
      <str name="echoParams">explicit</str> 
      <int name="rows">10</int> 
      <str name="q">*:*</str> 
      <bool name="facet">false</bool> 
     </lst> 
    </requestHandler> 
    <requestHandler name="/update" class="solr.UpdateRequestHandler"/> 
    <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" /> 
    <requestHandler name="/analysis/document" class="solr.DocumentAnalysisRequestHandler" startup="lazy" /> 
    <requestHandler name="/admin/" class="solr.admin.AdminHandlers" /> 
    <requestHandler name="/admin/ping" class="solr.PingRequestHandler"> 
     <lst name="invariants"> 
      <str name="q">*:*</str> 
     </lst> 
     <lst name="defaults"> 
      <str name="echoParams">all</str> 
     </lst> 
    </requestHandler> 
    <admin> 
     <defaultQuery>*:*</defaultQuery> 
    </admin> 
</config> 

core.properties Datei

name=newsportal 

EDIT

solr.xml Datei

<solr> 

    <solrcloud> 
    <str name="host">${host:}</str> 
    <int name="hostPort">${jetty.port:8983}</int> 
    <str name="hostContext">${hostContext:solr}</str> 
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int> 
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> 
    </solrcloud> 

    <shardHandlerFactory name="shardHandlerFactory" 
    class="HttpShardHandlerFactory"> 
    <int name="socketTimeout">${socketTimeout:0}</int> 
    <int name="connTimeout">${connTimeout:0}</int> 
    </shardHandlerFactory> 

</solr> 

Solr Version: 4.10.4

Frühling solr Daten Version: 1.5.5.BUILD-snapshot

ich jede Hilfe dankbar dieses Problem zu beheben Problem.

Antwort

0

haben einen Blick auf diese URL https://wiki.apache.org/solr/Solr.xml%20(supported%20through%204.x)

Um die Unterstützung für dynamische SolrCore Verwaltung zu ermöglichen, eine Datei namens solr.xml im solr.home Verzeichnis. Hier ist ein Beispiel solr.xml Datei:

<solr persistent="true" sharedLib="lib"> 
<cores adminPath="/admin/cores"> 
    <core name="core0" instanceDir="core0" /> 
    <core name="core1" instanceDir="core1" /> 
</cores> 
</solr> 

So die Datei solr ändern.xml mit dem einem entsprechenden Eintrag

<core name="core0" instanceDir="core0" /> 

this helps

+0

Es sagt ** Veraltete in 4.4 und nicht unterstützte als von 5.0 finden Solr.xml 4.4 und darüber hinaus **. Ich verwende Solr 4.10.4 https://wiki.apache.org/solr/Solr.xml%204.4%20and%20beyond –

+0

Entschuldigung, ich dachte, dass Sie Version vor 4.4 verwendet. –

+0

Ich habe das in meiner Frage angegeben. Wie auch immer, danke für die Antwort. (Y) –

1

Leider gibt es keinen sauberen Ansatz ist, wie das zu tun, weil collection1 in EmbeddedSolrServerFactory Klasse harcoded (entsprechend Jira ticket).

Aber ich versuchte, diese Hacky ein und es funktioniert für mich:

@Bean 
public EmbeddedSolrServerFactoryBean solrClient() { 
    EmbeddedSolrServerFactoryBean embeddedSolrServerFactoryBean = new EmbeddedSolrServerFactoryBean() { 

     @Override 
     public EmbeddedSolrServer getObject() { 
      return (EmbeddedSolrServer) getSolrClient("<YOUR_CORE_NAME>"); 
     } 
    }; 

    embeddedSolrServerFactoryBean.setSolrHome("<YOUR_SOLR_HOME"); 

    return embeddedSolrServerFactoryBean; 
}