2015-07-13 51 views
1

我正嘗試使用在創建請求處理程序和其他組件時指定JAR作爲運行時庫的支持。但是,從文檔(https://cwiki.apache.org/confluence/display/solr/Adding+Custom+Plugins+in+SolrCloud+Mode)中我不清楚這是否只能通過ConfigAPI創建的組件工作,或者如果runtimeLib="true"添加到solrconfig.xml中,它也應該可以工作。Solr runtimelib用法

例如:

<requestHandler name="/browse" class="solr.SearchHandler" runtimeLib="true"> 

我加runtimeLib =「true」將我所有的searchComponents和solrconfig.xml中requestHandlers,看它是否會工作,但開始Solr的實例時,他們都失敗了,因爲他們正在尋找一個在定製jar文件中的類。我已經添加了.system集合,並通過Solr參考指南/ Wiki文檔上傳了這些jar,並且可以看到.system集合,我也可以看到我的集合的configoverlay.json有兩個我上傳的jar。

我收藏的configoverlay.json內容

{"runtimeLib":{ 
    "my-custom-jar":{ 
     "name":"my-custom-jar", 
     "version":1}, 
    "sqljdbc41-jar":{ 
     "name":"sqljdbc41-jar", 
     "version":1}}} 

是指定solrconfig.xml中的一個runtimeLib屬性的支持?如果是這樣,那麼正確的用法是什麼?

回答

0

你快到了。更進一步,在您要鏈接的頁面上有一個創建解析器的例子。該示例使用完全不同的示例值,因此我可以理解爲什麼您可能會掩蓋它。

問題是,您需要使用頁面上提供的curl命令來註冊您的請求處理程序。不幸的是,您需要使用一條命令,我必須深入查看源代碼:create-requesthandler。要使用上述你的價值觀創建的請求處理程序,我想你應該發出命令

curl "http://{servername}:8983/solr/{collection}/config" -H 'Content-type:application/json' -d '{ 
    "create-requesthandler": { 
     "name":"my-custom-jar", 
     "runtimeLib": true, 
     "class": "solr.SearchHandler" 
    } 
}' 

記得要更換的servernamecollection值。如果您使用的是非默認值,請更改端口。

重新啓動您的solr服務器並且該插件應該可用。