2017-02-09 47 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. 使用一些獨特的封裝器(例如ø),然後在客戶端添加一個後處理步驟,將其刪除。更容易,但你需要額外的步驟...