0

这可能是一个微不足道的问题,但我正在尝试附加到现有的 Solr 索引,并且似乎每次都覆盖了那里的内容。我有两个要从中获取数据的数据库,我可以分别从每个数据库导入数据,但是当我从一个数据库导入数据然后立即从第二个数据库导入数据时,第一个被覆盖。我在我的 db-config.xml 文件中映射了两个数据源,并且我正在使用标准的管理 UI 来运行导入。我的配置文件看起来像这样。

<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">
      ...
    </entity>

 <entity name="entity2" dataSource="ds-2" query="SELECT ZZZ FROM TABLE">
      ...
    </entity>

  </document>
</dataConfig>

我能做些什么来防止原始索引被覆盖。我想一直递增地添加来自各种不同来源的数据,所以让我的索引被擦除现在对我有好处。

4

1 回答 1

1

您的问题是您可能正在将索引文档的键定义为数据库中的主键 id,并且值是重叠的。为了防止这种情况,您需要为 Solr 指定一个唯一的 ID。通常,当我过去遇到这个问题时,我使用一个字符串字段作为 id 字段,并将一个或两个字符附加到数据库中的 id 以使其唯一。示例:产品表中的项目将具有 P1、P2 等 ID,订单表中的项目将具有 O1、O2 等 ID。

您应该能够使用数据导入处理程序TemplateTransformer来帮助您完成此操作。

于 2013-03-27T15:49:31.873 回答