2012-10-25 195 views
4

在Web上搜索SOLR中的集合時,我僅找到關於分佈式搜索等的信息,但是當我理解correclty集合的概念正在同一個服務器實例上使用相同的模式運行但在邏輯上完全分離。它是否正確? 所以我可以有3個集合,並搜索一個集合不會輸出另一個權利的結果?是否可能一次搜索多個集合?在SOLR中創建集合

但我的主要優先:我如何創建第二個集合?即使鏈接到一個好的文檔,將不勝感激。 在我solr.xml我有

<cores adminPath="/admin/cores" defaultCoreName="web-collection" host="${host:}" hostPort="${jetty.port:}"> 
    <core name="web-collection" instanceDir="." /> 
    </cores> 

難道是足以創建第二個核心條目,並設置不同的路徑?像...

<cores adminPath="/admin/cores" defaultCoreName="web-collection" host="${host:}" hostPort="${jetty.port:}"> 
    <core name="web-collection" instanceDir="web" /> 
    <core name="test-collection" instanceDir="test" /> 
    </cores> 

什麼是instanceDir?它是相對於SOLR-Home的索引目錄嗎?

回答

2

有關設置內核及其工作方式的更多信息,請參閱Solr Wiki - CoreAdmin瞭解更多詳情和一些示例。

您添加第二個核心條目的示例已足夠。

實例目錄是相對於SOLR主頁值的索引目錄。

6

您可以使用多個核心。每個核心都是一個單獨的lucene索引。
instanceDir是該特定內核的配置文件的位置,該文​​件夾包含conf目錄,其中包含schema.xmlsolrconfig.xml等。通常每個核心都有一個子文件夾,其中solr.xml爲(SOLR_HOME),並使用相對路徑在solr.xml本身內引用它們。

1

除了REST API之外,您還可以使用SolrJ創建一個新的內核。努力營造一個自己後,這裏就是我最後做:

SolrServer aServer = new HttpSolrServer("http://127.0.0.1:8983/solr"); 
CoreAdminResponse aResponse = CoreAdminRequest.getStatus(collectionName, aServer); 

if (aResponse.getCoreStatus(aNewInstance.getCollection()).size() < 1) 
{ 
    CoreAdminRequest.Create aCreateRequest = new CoreAdminRequest.Create(); 
    aCreateRequest.setCoreName(collectionName); 
    aCreateRequest.setInstanceDir(collectionName); 
    aCreateRequest.process(aServer); 
} 
+0

你好武鋼,我得到的aCreateRequest.process(Aserver的)錯誤;聲明。我的if語句就像這樣if(aResponse.getCoreStatus(collectionName).size()<1){}。請給我建議的問題。 –

+0

什麼是你的代碼中的新實例? –

+0

我不確定我是否理解你的第一條評論。如果你從if塊中刪除了那行,它是如何拋出異常的?另外,我從事這項工作已經一年半了,所以我不太記得。如果我不得不猜測,我會說aNewInstance()。getCollection()可能需要返回您嘗試查找或創建的集合的名稱。 –

0

測試使用Solr 6.x的

幸運的是,現在有腳本bin/solr是能夠檢測的標準選項create在哪種模式下運行Solr(獨立或SolrCloud),然後採取適當的操作(創建一個核心或創建一個集合)。

$ bin/solr create -help 

Usage: solr create [-c name] [-d confdir] [-n configName] [-shards #] [-replicationFactor #] [-p port] 

例如,假設你在端口8983運行最新的Solr的版本中,創建一個新的核心只是運行:

bin/solr create -c collection1 -d /path/to/solr/conf 

一個重要的區別有困惑要做到這一點有時發生在Collections和Cores之間。從客戶角度來看,沒有區別,因此創建核心或集合取決於Solr是以獨立(核心)還是SolrCloud模式(集合)運行。

更完整的區別引薦到Solr Collection vs Cores