2017-02-09 54 views
1

我需要从我的Solr查询中获取CSV输出,因此我使用Solr的CSV响应编写器。Solr CSV响应编写器:如何获得无封装器

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

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

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

Solr Wiki中似乎没有关于此的文档。

我该如何抑制封装?

回答

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. 使用一些独特的封装器(例如ø),然后在客户端添加一个后处理步骤,将其删除。更容易,但你需要额外的步骤...