如何在SOLR中将不同的模式文件放到不同的核心?

时间:2011-09-21 17:49:15

标签: java lucene solr

我有一个SOLR实例,有三个不同的核心 我创建了一个solr.xml配置文件,它指定每个核心的模式文件,但是它无法识别。系统仍然尝试加载默认的schema.xml(我将其删除,因此失败)。

出于调试目的,我只在solr.xml中留下了一个代码,这里是我的条目:

<solr persistent="false">
  <cores adminPath="/admin/cores" defaultCoreName="content" shareSchema="false">
        <core name="content" instanceDir=".">
                <property name="schema" value="conf/contentSchema.xml" />
        </core>
  </cores>
</solr>

文件`contentSchema.xml存在于[SOLR_HOME] / conf下。 Itried只是文件名和conf / filename

甚至没有达到那个阶段,错误是:

  

SEVERE:java.lang.RuntimeException:无法在类路径中找到资源'schema.xml'   /usr/local/solr/./conf/',cwd = / usr / local / solr

3 个答案:

答案 0 :(得分:2)

如果您已下载源,请检查多核文件夹,该文件夹演示您可以参考和测试的多核配置。 或者参考@ http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/example/multicore/

更多@ http://wiki.apache.org/solr/CoreAdmin#Configuration - 将是一个很好的起点。

多核不需要在solr主文件夹下,可以使用     -Dsolr.solr.home =多核

solr.xml与核心文件夹位于同一文件夹中。 实例目录指向核心文件夹 schemaName - 核心模式文件的名称(默认为schema.xml) e.g。

<core name="content" instanceDir="content">
     <property name="schemaName" value="contentSchema.xml" />
</core>

答案 1 :(得分:1)

仔细阅读文档,'schema'是核心元素的属性,而不是PROPERTY。所以假设你把'myschema.xml'放在core的conf文件夹下:

<core ....>
   <property name="schema" value="myschema.xml" />
</core>

将导致在classpath中找不到schema.xml或..... / conf错误

然而,

<core .... schema='myschema.xml' />

会成功。

注意:Lucid Imagination的文档可能已经过时,或者说它可能是在谈论Solr未来版本的一个功能,我猜。

答案 2 :(得分:0)

这是我最终使用和工作的原因

<cores adminPath="/admin/cores" defaultCoreName="content">
    <core name="content" instanceDir="./content" />
    <core name="users" instanceDir="./users" />
    <core name="users_organizations" instanceDir="./users_organizations" />
</cores>

在每个目录下,我有一个conf目录及其自己的conf文件,它们又指向正确的data文件夹(在solrconfig.xml文件中)