2013-08-01 67 views
4

我想從舊的solr.xml格式遷移到4.4中的核心自動發現,但我遇到了一個問題,就像我以前一樣在覈心之間共享配置(solrconfig.xml,schema.xml和相關文件)。如何在Solr 4.4+的核心之間共享模式和配置?

我的老solr.xml是這樣的:

<?xml version="1.0" encoding="UTF-8" ?> 
<solr persistent="true"> 
    <cores defaultCoreName="core1" adminPath="/admin/cores"> 
    <core instanceDir="."name="core1" dataDir="core/core1"/> 
    <core instanceDir="."name="core2" dataDir="core/core2"/> 
    ... 
    </cores> 
</solr> 

目錄結構:

solr.xml 
conf 
    schema.xml 
    solrconfig.xml 
    ... 
core 
    core1 
    core2 
    ... 

一切正常,這樣一來,整個構造內核之間共享。它正在工作,因爲所有內核的實例目錄相同,並且conf目錄在其下。

在4.4的核心自動發現中,不可能爲所有核心具有相同的實例目錄。雖然,我發現一個可行的解決方案:

目錄結構:

solr.xml 
common 
    conf 
     schema.xml 
     solrconfig.xml 
     ... 
core 
    core1 
     core.properties 
     data 
    core2 
     core.properties 
     data 
    ... 

solr.xml:

<solr> 
    <str name="sharedLib">common</str> 
</solr> 

core.properties:

name=core1 

它的工作原理是因爲通過conf目錄在classpath中,這要感謝shareLib指令。但它不能完全令人滿意,因爲我不能顯示在管理Web應用程序的配置文件,我得到以下異常:

java.lang.NullPointerException 
    at org.apache.solr.handler.admin.ShowFileRequestHandler.showFromFileSystem(ShowFileRequestHandler.java:210) 
    at org.apache.solr.handler.admin.ShowFileRequestHandler.handleRequestBody(ShowFileRequestHandler.java:122) 
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904) 

是否有共享4.4所有核心之間的配置更好的辦法?

回答

1

我們遇到了同樣的問題。我們試圖在core.properties文件夾中指定一個相對路徑,但這不起作用。

我們最終做的是在SOLRHome文件夾中創建一個conf文件夾,然後在core/conf目錄中創建符號鏈接。

下面是我執行創建符號鏈接的命令:

ln -s ../../conf/solrconfig.xml solrconfig.xml 
ln -s ../../conf/schema.xml schema.xml 
+0

這絕對作品,但我需要爲每個核心做到這一點。我用這個腳本完成了這個工作: '用於核心$ SOLR_HOME/core/*;做ln -s $ SOLR_HOME/common/conf $ core/conf; done' –