2012-06-18 57 views
2

我们正在努力建设的数据与来自2个不同的数据库,SOLR索引2个数据库

来望着那http://wiki.apache.org/solr/DataImportHandler#Multiple_DataSources一个SOLR指数,这似乎应该是可能的,但我们有问题。

<dataConfig> 
    <dataSource 
    name="ds-1" 
    type="JdbcDataSource" 
    driver="Driver" 
    url="jdbc_url1" 
    user="user1" 
    password="pass1"/> 

<dataSource 
    name="ds-2" 
    type="JdbcDataSource" 
    driver="Driver" 
    url="jdbc_url2" 
    user="user2" 
    password="pass2"/> 

    <document> 

<entity name="entity1" datasource="ds-1" query="SELECT YYY FROM TABLE"> 
     <field column="YYY" name="YYY"/> 
    </entity> 

<entity name="entity2" datasource="ds-2" query="SELECT ZZZ FROM TABLE"> 
     <field column="ZZZ" name="ZZZ"/> 
    </entity> 

    </document> 
</dataConfig> 

当试图运行的索引,它适用于第一个实体/查询/ DS,然后失败,org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT ZZZ FROM TABLE

好像它试图在DS-1执行QUERY2 ...

我们也改变了数据源和/或实体定义的顺序,看起来它总是只能索引第一个。

我们做错了什么?我们对SOLR能做什么有错误的期望吗?

感谢您的帮助

回答

4

我相信你的问题仅仅是一个案件的问题。 datasource应该是dataSource,我记得Solr XML配置属性区分大小写。使用当前配置,dataSource不会实际定义,因此处理程序将使用已定义的第一个数据源(单数据源模式)。

您应将其更改为:

<entity name="entity1" dataSource="ds-1" query="SELECT YYY FROM TABLE"> 
    <field column="YYY" name="YYY"/> 
</entity> 
+0

,这是当我发现自己在前面的代码愚蠢......非常感谢,该诀窍 – florent