7

我们正在尝试从 Solr 3.6.2 升级到 Solr 4.2.1,并且在使用 data-config.xml 中 solrcore.properties 中的属性时遇到问题。

使用 Solr 3.6.2,我们能够直接使用 data-config.xml 中 solrcore.properties 中的属性,例如:

<dataSource driver="${jdbc.driver}" 
            url="jdbc:mysql://${jdbc.host}:${jdbc.port}/${db.name}" 
            user="${jdbc.username}" 
            password="${jdbc.password}" 
            batchSize="-1" />

现在找不到这些属性,所以当我调用 dataimport 时,它会抛出这个异常:

Apr 26, 2013 11:10:58 AM org.apache.solr.common.SolrException log
SEVERE: Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver:  Processing Document # 1
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:266)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:422)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:487)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:468)
Caused by: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver:  Processing Document # 1
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:406)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:319)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:227)
    ... 3 more
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver:  Processing Document # 1
    at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71)
    at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114)
    at org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:62)
    at org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:394)
    at org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:99)
    at org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:53)
    at org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:74)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:423)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:404)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: Unable to load  or org.apache.solr.handler.dataimport.
    at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:911)
    at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:112)
    ... 12 more
Caused by: org.apache.solr.common.SolrException: Error loading class ''
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:440)
    at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:901)
    ... 13 more
Caused by: java.lang.ClassNotFoundException: 
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:424)
    ... 14 more

如果我对 data-config.xml 中的属性进行硬编码,则导入工作正常。

data-config.xml 和 solrcore.properties 都在目录下 project_name/solr/app-cores/core_name/conf

然后从这里获取提示并尝试在 solr-config.xml 中配置数据导入请求处理程序中的属性,如下所示:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
        <str name="jdbcDriver">${jdbc.driver}</str>
        <str name="jdbcHost">${jdbc.host}</str>
        <str name="jdbcPort">${jdbc.port}</str>
        <str name="jdbcUsername">${jdbc.username}</str>
        <str name="jdbcPassword">${jdbc.password}</str>
    </lst>
</requestHandler>

并在 data-config.xml 中使用它们,{dataimport.jdbcDriver}{dataimport.request.jdbcDriver}它们会抛出相同的异常!

如何解决这个问题?

4

1 回答 1

2

使用${dataimporter.request.jdbcDriver}请求处理程序方法有效!

于 2015-05-29T19:46:22.303 回答