Solr CSV响应编写器:如何获得没有封装器

时间:2017-02-09 17:08:50

标签: csv solr

我需要从我的Solr查询中获取CSV输出,因此我使用的是Solr的CSV响应编写器。

使用wt=csv完成所有工作正常而不更改CSV输出的默认值,但我有一个要求:我需要制表符分隔的CSV,根本没有文字值引用。

选项卡分离很简单,因为我可以在Solr csv响应编写器中将选项卡指定为csv.separator

问题是如何摆脱封装: 封装csv字段的默认值为"。 但设置encapsulator=''encapsulator=None会返回错误Invalid encapsulator

Solr Wiki中似乎没有相关文档。

我怎样才能抑制封装?

1 个答案:

答案 0 :(得分:1)

你无法做到,java源代码需要1个字符长度的封装器:

String encapsulator = params.get(CSV_ENCAPSULATOR);
String escape = params.get(CSV_ESCAPE);
if (encapsulator!=null) {
  if (encapsulator.length()!=1) throw new SolrException( SolrException.ErrorCode.BAD_REQUEST,"Invalid encapsulator:'"+encapsulator+"'");
  strat.setEncapsulator(encapsulator.charAt(0));
}

你能做什么:

  1. 编写自己的自定义NoEncapsulatorCSVResponseWriter,可能是继承自CSVResponseWriter,并修改代码以使其不使用封装器。不难,但主要是麻烦。
  2. 使用一些独特的封装器(例如ø),然后在客户端添加一个后处理步骤,只删除它。更容易,但你需要额外的一步......