我正在使用post
工具将数十万个文档读入Solr实例。我发现在这个语料库中,由于某种类型的模式类型错误导致大约150个文档失败,例如我将“已创建”字段定义为日期字段,但少数文档在该字段中的日期值无效。
不是改变架构并重新索引所有文档(一个大约需要20个小时的过程),为了我的目的,只需通过忽略“created”字段来读取失败到索引中的文档。
如何配置Solr来接收它收到的文件,只需从中删除created
字段?更好的是,我如何告诉Solr简单地删除未通过模式验证的任何字段?
答案 0 :(得分:0)
有两种可能性:
要忽略相关字段,请使用fmap
parameter将其映射到忽略的字段。例如:
bin/post -c mycollection -params \
"fmap.created=ignored_created" files...
利用模式中ignored_*
类型的动态ignored
字段,例如:
<dynamicField name="ignored_*" type="ignored" multiValued="true"/>
如果信息有效但格式不正确,请使用更新处理器解析格式或修改输入。例如,要以不寻常的格式解析日期,请将格式添加到solr.ParseDateFieldUpdateProcessorFactory
中的solrconfig.xml
。
要修改输入,请使用RegexReplaceProcessorFactory
。