1

我有一个主 solr 服务器(solr1),它存储所有 doc 的索引,并希望实现以下功能:
1. 首先从 solr1 完全导入我最近(过去 1 或 2 周)更新/创建的 doc。
2. 每隔一段时间进行增量导入,将我的文档的更改从 solr1 复制到 solr2。- 在此期间可能会删除、更新、创建文档。

-- 作为SqlEntityProcessor 支持的将数据从DB 导入Solr 的功能。

http://wiki.apache.org/solr/DataImportHandler#SolrEntityProcessor
SolrEntityProcessor 可以根据查询(使用配置文件中的查询参数)从一个 Solr 完全导入到另一个 solr,但以后似乎无法进行增量导入:没有 deltaImportQuery 和 deltaQuery 配置,SqlEntityProcessor 支持。

我该如何实现这个功能?
感谢您的帮助和回复:)

4

1 回答 1

1

您应该能够通过使用可以模拟此的 Solr 字段和过滤查询来实现 deltaImportQuery 的等效项。

我建议在timestamp您的 Solr 架构中添加一个字段。下面是solr 示例模式中的字段定义。

   <field name="timestamp" type="date" indexed="true" stored="true" 
       default="NOW" multiValued="false"/>

这将创建一个记录最后一次将记录添加到 Solr 索引的字段,您可以fq向 SolrEntityProcessor 查询添加过滤查询选项,以将结果限制为仅那些时间戳字段值大于或等于上次在过滤器查询中使用 DateMath 运行您的导入处理程序的时间。

以下是有关 DateMath 工作原理的一些很好的参考资料。

于 2012-10-12T15:05:43.110 回答