在SOLR中创建集合

时间:2012-10-25 13:36:11

标签: java solr solrj

在网上搜索SOLR中的集合时,我只找到有关分布式搜索的信息等等,但是当我理解correclty集合的概念在同一服务器实例上运行时使用相同的模式但在逻辑上完全分开。它是否正确? 所以我可以有3个集合,搜索一个集合不会输出另一个集合的结果吗?是否可能一次搜索多个集合?

但我的主要优先事项是:如何创建第二个系列?即使是与优秀文档的链接也会受到赞赏。 在我的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的索引目录吗?

4 个答案:

答案 0 :(得分:6)

您可以使用多个核心。每个核心都是一个独立的lucene指数 instanceDir是该特定核心的配置文件的位置,该文​​件夹包含conf目录,其中包含schema.xmlsolrconfig.xml等。您通常在每个核心的子文件夹中solr.xml是(SOLR_HOME),并使用相对路径在solr.xml本身内引用它们。

答案 1 :(得分:2)

有关设置内核及其工作方式的详细信息,请参阅Solr Wiki - CoreAdmin以获取更多详细信息和一些示例。

添加第二个核心条目的示例就足够了。

实例目录是相对于SOLR主页值的索引目录。

答案 2 :(得分:2)

除了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);
}

答案 3 :(得分:0)

使用Solr 6.x

进行测试

幸运的是,现在有一个脚本create的标准选项bin/solr能够检测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

必须对集合和核心之间有时发生的混淆进行重要区分。从客户端的角度来看,没有区别,因此创建核心或集合取决于Solr是以独立(核心)还是SolrCloud模式(集合)运行。

要获得更完整的区分引用Solr Collection vs Cores

相关问题