有没有办法在solr中为CSV上传器指定可变数量的列?

时间:2013-01-25 05:28:09

标签: solr

我正在使用CSVupdateHandler将CSV文件索引到Solr中。我的Csv文件在每一行中都有可变数量的字段(例如,第2行中的4个字段,第2行中的6个等等)。

      line1:field1,field2,field3,field4 
      line2:field1,field2,field3,field4,field5,field6
      line3:field1,field2,field3,field4 

那么有没有办法指定字段名的变量?我想要它做的是如果有四个字段则索引4列,如果有六个则索引6。任何其他替代方式来实现这一点也是值得赞赏:)谢谢!

更新:

let me describe the situation ....

我有一个包含CSV数据的文件,如上图所示。我使用fieldnames参数指定Solr必须使用的字段名称。因为我的文件中的每个LINE都没有设置CSValues数量,所以我不能为此文件设置标准标题,而不必使用空值填充某些行。例如。当我上传上面的文件与6个标题字段定义行1和3将抛出一个错误,如果我使用4个标题字段第2行抛出错误..我想知道是否有一种方法来指定标题字段,如上所述条件工作...或者我必须将我的文件转换为带有填充虚拟值的eqal长度字段吗?

2 个答案:

答案 0 :(得分:0)

您希望第5列和第6列映射到什么位置?你需要让索尔知道这种或那种方式吗?在这种情况下,你只是为缺少的项目做空的昏迷。

另一方面,如果您尝试将多个值提供到单个字段中,那么您可能应该将字段分隔符设置为其他字段,并将逗号作为值分隔符。

尝试思考你希望Solr从中看到并向后工作。

答案 1 :(得分:0)

解决了这个问题:在schema.xml中使用默认值指定自定义字段。考虑到某些行中额外的两个字段!提供的schema.xml有很多例子!

替代方法:您还可以定义自定义updateRequestProcessor并使用java根据条件添加字段。并将此处理器指定为请求处理程序中更新处理器链的一部分。