2013-10-07 36 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配置

相關問題