1. 程式人生 > >solr配置批量匯入資料

solr配置批量匯入資料

配置批量匯入資料

使用dataimport外掛批量匯入資料。

第一步:把dataimport外掛依賴的jar包新增到solrcore(collection1\lib)中


複製到...........

因為批量匯入mysql資料庫內容所以新增mysql資料庫驅動包


第二步:配置solrconfig.xml檔案,新增一個requestHandler。


新增欄位


 <requestHandler name="/dataimport" 
class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
     </lst>
  </requestHandler> 

第三步:建立一個data-config.xml,儲存到collection1\conf\目錄下


圖中的product 代表 資料庫表中資料對應的域,這裡的域必須使用solr\solrhome\collection1\conf\schema.xml配置好的域名

去認識schema.xm


FieldType是域的型別,下面是solr提供的預設型別

FieldType子結點包括:name,class,positionIncrementGap等一些引數:

name:是這個FieldType的名稱

class:是Solr提供的包solr.TextField,solr.TextField 允許使用者通過分析器來定製索引和查詢,分析器包括一個分詞器(tokenizer)和多個過濾器(filter)

positionIncrementGap:可選屬性,定義在同一個文件中此型別資料的空白間隔,避免短語匹配錯誤,此值相當於Lucene的短語查詢設定slop值,根據經驗設定為100。

在FieldType定義的時候最重要的就是定義這個型別的資料在建立索引和進行查詢的時候要使用的分析器analyzer,包括分詞和過濾

Field域


在fields結點內定義具體的Field,filed定義包括name,type(為之前定義過的各種FieldType),indexed(是否被索引),stored(是否被儲存),multiValued(是否儲存多個值)等屬性。

如下:

<fieldname="name" type="text_general" indexed="true"stored="true"/>

<fieldname="features" type="text_general"indexed="true" stored="true"multiValued="true"/>

multiValued:該Field如果要儲存多個值時設定為true,solr允許一個Field儲存多個值,比如儲存一個使用者的好友id(多個),商品的圖片(多個,大圖和小圖),通過使用solr查詢要看出返回給客戶端是陣列

dynamicField(動態欄位)

動態欄位就是不用指定具體的名稱,只要定義欄位名稱的規則,例如定義一個 dynamicField,name 為*_i,定義它的type為text,那麼在使用這個欄位的時候,任何以_i結尾的欄位都被認為是符合這個定義的,例如:name_i,gender_i,school_i等。

自定義Field名為:product_title_t”和scheam.xml中的dynamicField規則匹配成功,如下:

“product_title_t”是以“_t”結尾。

copyField複製域

copyField複製域,可以將多個Field複製到一個Field中,以便進行統一的檢索:

比如,輸入關鍵字搜尋title標題內容content,

定義title、content、text的域:



根據關鍵字只搜尋text域的內容就相當於搜尋title和content,將title和content複製到text中,如下:


配置好了現在,就可以批量匯入資料庫中的資料了