2017-03-25 49 views
0

我在下面通過自定義分隔格式得到Feed文件數據的區分Solr的 - 加載和指數自分隔的文件

employee_id||034100151730105|L| 
employee_cd||03410015|L| 
dept_id||1730105|L| 
dept_name||abc|L| 
employee_firstname||pqr|L| 
employee_lastname||ppp|L| 
|R||L| 
employee_id||034100151730108|L| 
employee_cd||03410032|L| 
dept_id||4230105|L| 
dept_name||fdfd|L| 
employee_firstname||sasas|L| 
employee_lastname||dfdf|L| 
|R||L| 
..... 

所以我行分隔符是| R ||大號| 每個記錄分隔符是| L |和 記錄名稱(employee_id)和記錄值(034100151730105)之間用||隔開。

我需要在下面的方式

employee_id: 034100151730105 
employee_cd: 03410015 
... 

是否有人可以幫助我來加載和索引這些數據SOLR使用/更新,我怎麼能解析和加載這個飼料SOLR?

回答

1

由於Solr將無法攝取此。最簡單的事情是:

  1. 使用像grep/sed等一些命令行工具將此格式轉換爲Solr/update將理解的適當csv。您需要:替換| L |和||用分隔符替換| R || L |用一個新行,並採取逃避的分隔符使用等
  2. 然後使用/更新與通常的參數「分隔符」等
  3. 忽略了與所有字段名「跳過」

或護理,您可以編寫一段非常簡單的代碼,將每個doc讀入內存,並通過Solrj或http將其索引到solr中。

+0

感謝您的回覆。我已經替換| L | as |,| R || L |作爲新行和** | as = **。當我嘗試更新它時,將「employee_id = 034100151730105」視爲一個實體,而不是將「employee_id」作爲字段名稱,將「034100151730105」視爲值。有沒有什麼辦法可以提到字段級別分隔符並且說「fieldname = fieldvalue」 – user1637487

+0

我已經更新了我的答案,您必須將employee_id等字段作爲普通字段處理,只需在索引時忽略它們 – Persimmonium

+0

我需要依賴每條記錄找到它的字段名稱,如fieldname是「employee_id」,值是「034100151730105」。原因是很少的記錄可能沒有幾個字段,所以當加載數據而不是指定in/update時,字段名稱必須被動態分配。如果我將它們加載爲普通字段並在索引時跳過,則結果數據將僅爲034100151730105 = 034100151730105,03410015 = 03410015等。如果無論如何我可以在解析數據時動態分配字段名稱,請讓我知道嗎? – user1637487

相關問題