2013-10-07 35 views
0

我正在使用Solr 4.3。我创建了4个碎片。我配置了唯一键自动生成的字段说明如下:Solr集群+ DataImportHandler:我可以自动生成ID吗?

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

如果我用实际的更新处理程序中插入的文件(即,如果我做一个HTTP POST到/更新一些JSON数据它工作正常,唯一的关键是为每个文档自动生成的)。

但是,如果我使用DataImportHandler从数据库中拉出一些文档,它们不会添加到索引中,而是在Solr日志中看到一条警告,声明“强制ID字段丢失”。

我知道DataImportHandler不经过UpdateHandler添加文档,但我希望这个功能会为谛工作,以及...

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

回答

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配置

相关问题