7

SolR DataImportHandler 的配置文件包含对数据库运行的 SQL 查询、如何将结果列映射到 SolR 文档字段,当然还有连接到数据库所需的参数。

在我们的项目中,数据库连接参数(特别是数据库密码)因环境而异,这迫使我们为每个环境维护一个稍微不同的整个配置 XML 文件的副本。

有没有办法将数据库连接参数(特别是密码)与 SQL 语句和声明分开配置,这样每个配置都只维护一次?

4

2 回答 2

5

实际上,这可以使用标准的 solr 配置来完成。

首先,您需要在 solrconfig.xml 中定义您的数据源 [参见在 Solrconfig 中添加数据源]

其次,您可以使用XInclude将 DIH 配置外部化到单独的文件中

我使用这种方法既可以使用本地配置文件,也可以集中不同内核之间的连接。


示例:在 solrconfig.xml 中,添加:

<xi:include href="../../common-config/local.dih.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

local.dih.xml 看起来像:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">data-config.xml</str>
    <lst name="datasource">
      <str name="name">mongo</str>
      <str name="type">MongoDataSource</str>
      <str name="database">myMongoDb</str>
    </lst>
    <lst name="datasource">
      <str name="name">psql</str>
      <str name="driver">org.postgresql.Driver</str>
      <str name="type">JdbcDataSource</str>
      <str name="url">jdbc:postgresql://localhost:5432/myPsqlDb</str>
      <str name="user">dbUser</str>
      <str name="password">dbPassword</str>
    </lst>
  </lst>
</requestHandler>  
于 2013-04-28T15:01:44.310 回答
2

这是 Solr 中的一个已知问题。

如果您查看 Solr 文档或 Solr Entreprise Server book,他们说您可以使用 key=value 的 core1.properties 并在您的 xml 配置文件中使用 key ...但根据我的经验,它不起作用。我已经尝试了几种方法,solr 邮件列表上有关于此的未解决问题。

因此,您必须求助于丑陋的解决方法(例如使用模板 xml 文件并将 #password# 替换为真实密码等)。

于 2012-06-28T13:27:28.837 回答