(五) solr 索引數據導入:csv格式


有時候我們有一些通過SQL導出的csv格式的文件如果需要導入到slor,可以采用以下的方法

首先假定我們的schema.xml如下所示:

<field name="id" type="string" stored="true" indexed="true"/>
<field name="name" type="string" stored="true" indexed="true"/>
<field name="isbn" type="string" stored="true" indexed="true"/>
<field name="description" type="text" stored="true" indexed="true"/>

我們的csv(books.csv)文件的內容如下:

id;name;isbn;description;publish_date
1;Solr cookbook;ABC123456;"Solr Cookbook";2011-06
2;Some book 1;JHDS871281;"Some book";2010-01
3;Some book 2;9182KSC98;"Another book";2010-02

為了能夠將上面的csv數據正確的導入,我們需要對solrconfig.xml文件進行如下修改:

<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
<lst name="defaults">
   <str name="separator">;</str>
   <str name="header">true</str>
   <str name="skip">publish_date</str>
   <str name="encapsulator">"</str>
</lst>
</requestHandler>

說明:

startup="lazy":通過該參數告訴solr在第一次添加時才實例化這個更新處理程序

<str name="separator">;</str> : 通過該參數告訴solr 字段之間是通過“;”分隔

<str name="header">true</str>:通過該參數告訴solr在數據項之前含有頭信息

<str name="skip">publish_date</str> :通過該參數告訴solr,publish_date 這列數據需要忽略掉

<str name="encapsulator">"</str>:通過該參數告訴solr數據項是通過雙引號(")進行封裝的

設置完畢,重啟solr,並提交數據:

curl http://localhost:8983/solr/update/csv?commit=true --data-binary @books.csv -H 'Content-type:text/plain; charset=utf-8'


小提示:

封裝好的數據項(此處為雙引號),也可以進行拆分,如果過我們將name 字段設為多值,那么在requestHandler里面做一個小的調整,可以對如下文檔進行處理:

id;name;isbn;description;publish_date
1;"Solr cookbook;New solr cookbook";ABC123456;"Solr Cookbook";2011-06

在 requestHandler里再添加一項:<str name="split">true</str>

這樣設置之后,solr里面會添加一條id為1,name 字段有 Solr cookbook、New solr cookbook 兩個值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM