0

我正在使用 Solr 4.3。我创建了 4 个分片。我配置了 UniqueKey 自动生成的字段,如下所述:

http://wiki.apache.org/solr/UniqueKey

如果我使用实际的更新处理程序插入文档(即,如果我使用一些 JSON 数据对 /update 进行 HTTP POST,则为每个文档自动生成唯一键),它工作正常。

但是,如果我使用 DataImportHandler 从数据库中提取一些文档,它们不会添加到索引中,而是会在 Solr 日志中看到一条警告,指出“缺少强制性 id 字段”。

我知道 DataImportHandler 不会通过 UpdateHandler 添加文档,但我希望这个功能也适用于 DIH ......

所以我的问题是:有人知道在使用 DataImportHandler 插入文档时如何使 Solr 4.3 集群的 id 自动生成工作吗?

4

1 回答 1

2

好吧,我最终使用的解决方案是

  • 在 Java 中创建了一个自定义转换器(实际上我已经在使用一个 - 我发现它比在 JS 中执行它们更快 - Solr 提供的另一个选项)
  • 在变压器内部,我几乎做了 UUIDUpdateProcessorFactory 所做的事情:添加

    @Override
    public Object transformRow(Map<String, Object> row, Context context) {
        row.put("id", UUID.randomUUID());
    
  • 然后我从我的 solrconfig.xml 中删除了<updateRequestProcessorChain name="uuid">标签,并且只根据问题中的链接留下了 schema.xml 配置

于 2013-10-08T09:47:19.763 回答