2016-12-19 48 views
0

我正在使用post工具將數十萬個文檔讀入Solr實例。我發現在這個語料庫中,大約有150個文檔由於某種類型的模式類型錯誤而失敗,例如我將「創建」字段定義爲日期字段,但少數文檔在該字段中具有無效的日期值。Solr:忽略或修改錯誤類型或其他類型錯誤的字段

與其改變模式並重新索引所有文檔(一個過程大約需要20個小時),對於我的目的而言,只需通過忽略「已創建」字段來讀取失敗的文檔即可。

我該如何配置Solr來攝取它接收到的文檔,並簡單地從它們中刪除created字段?更好的是,我該如何告訴Solr簡單地刪除任何字段,其​​中的模式驗證失敗?

回答

0

有兩種可能性:

1)忽略領域

要忽略所討論的字段中,使用fmap parameter將它映射到一個忽略字段。例如:

bin/post -c mycollection -params \ 
    "fmap.created=ignored_created" files... 

它利用在模式例如ignored類型的動態ignored_*字段:

<dynamicField name="ignored_*" type="ignored" multiValued="true"/> 

2)更改格式

如果信息是有效的,但不是在正確的格式,使用更新處理器來解析格式,或修改輸入。例如,要以非常規格式解析日期,請將格式添加到solrconfig.xml中的solr.ParseDateFieldUpdateProcessorFactory

要修改輸入,請使用RegexReplaceProcessorFactory