4

我想从旧的 solr.xml 格式迁移到 4.4 中的核心自动发现,但是像以前一样在核心之间共享配置(solrconfig.xml、schema.xml 和依赖文件)时遇到问题。

我的旧 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>

核心属性:

name=core1

它之所以有效,是因为 conf 目录位于类路径中,这要归功于 shareLib 指令。但这并不完全令人满意,因为我无法在 admin webapp 中显示配置文件,我得到以下异常:

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 中的所有内核之间共享配置?

4

1 回答 1

1

我们有同样的问题。我们试图在 core.properties 文件夹中指定一个相对路径,但这不起作用。

我们最终做的是在 SOLRHome 文件夹中创建一个 conf 文件夹,然后在 core/conf 目录中创建符号链接。

以下是我为创建符号链接而执行的命令:

ln -s ../../conf/solrconfig.xml solrconfig.xml
ln -s ../../conf/schema.xml schema.xml
于 2013-09-17T16:40:21.070 回答