天天看點

跟益達學Solr5之從MySQL資料庫導入資料并索引

  最近有小夥伴跟我抱怨說:益達,最近部落格更新的有點慢呐。其實不是我變懶了,我是不想因為數量而降低了部落格的品質,我需要抱着對你們負責的态度來寫每一篇部落格,絕不能含糊啊,是以,還望大家多多包涵呐。

首先我們需要準備一張測試表,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引

 測試表建立好了之後,我們需要讓表裡插入幾條測試資料,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後需要把e:\solr-5.1.0\dist目錄下的solr-dataimporthandler-5.1.0.jar複制到e:\apache-tomcat-7.0.55\webapps\solr\web-inf\lib目錄下,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引

 複制一個mysql資料庫驅動jar包到e:\apache-tomcat-7.0.55\webapps\solr\web-inf\lib目錄下(如果你使用的oracle資料庫,那就是複制oracle資料庫驅動jar包,你懂的),如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後你需要建立solr_home根目錄,以及在solr_home建立你的core目錄結構,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

預設dataimport功能在solr5中是禁用的,需要在solrconfig.xml中添加如下配置開啟資料導入功能:

跟益達學Solr5之從MySQL資料庫導入資料并索引

<requesthandler name="/dataimport" class="solr.dataimporthandler">  

      <lst name="defaults">  

            <str name="config">data-config.xml</str>  

      </lst>  

</requesthandler>  

這裡的data-config.xml是個相對路徑,是相對于你目前core下的conf目錄即c:\solr_home\core1\conf,當然你也可以直接寫成絕對路徑,比如:c:\solr_home\core1\conf\data-config.xml,建議寫成相對路徑。

從e:\solr-5.1.0\example\example-dih\solr\solr\conf路徑下複制一份 data.config.xml配置檔案到solrconfig.xml配置檔案的同級目錄c:\solr_home\core1\conf下,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後我們需要使用文本編輯軟體打開data-config.xml配置檔案稍作修改,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 其中solrdb為資料源自定義名稱,随便取,沒什麼限制,type這是固定值,表示jdbc資料源,後面的driver表示jdbc驅動類,這跟你使用的資料庫有關,url即jdbc連結url,後面的user,password分别表示連結資料庫的賬号密碼,下面的entity映射有點類似hiberante的mapping映射,column即資料庫表的列名稱,name即schema.xml中定義的域名稱

緊接着我們需要打開schema.xml配置檔案對域名稱、域類型、是否索引、是否存儲、是否分詞等資訊進行配置,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 注意:這裡的cndate域類型是我自定義的域類型,我在下面定義的,看圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 triecndatefield是我自定義的域類型,源碼我稍候分享,主要是為了使日期能以我們習慣的yyyy-mm-dd hh:mm:ss這種格式來存儲,而不是預設的西方人習慣的類似這樣的格式:1995-12-31t23:59:59z

跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引

 把這個jar包複制到e:\apache-tomcat-7.0.55\webapps\solr\web-inf\lib目錄下,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後啟動我們的tomcat,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 這裡我假定你們都已經成功把solr5部署到了tomcat下了,如果tomcat正常啟動後,我們會看到:

跟益達學Solr5之從MySQL資料庫導入資料并索引
跟益達學Solr5之從MySQL資料庫導入資料并索引

 點選左側的dataimport菜單,不出意外的話,你将看到如圖截圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 需要引起注意的是這裡的command參數,它有兩個選項,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 full-import:全量導入,它會覆寫原有的索引

delta-import:即增量導入,它會在原有索引的基礎上追加

下面的幾個多選框含義解釋如下:

verbose:這個選項設為true的話,會列印導入的一些中間過程的詳細資訊,有利于調試以及了解内部操作細節

clean:表示是否在導入資料建立索引之前先清空掉原有的索引

commit:表示是否立即送出索引

optimize:表示是否優化索引

debug: 表示是否開啟調試模式

然後選擇需要導入的entity,點選execute按鈕開始執行資料導入操作,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 如果你看到indexing字樣,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 如果你導入的資料并不多,但這個界面停留了很長時間(比如超過了30秒,就不需要再傻傻等着了),那麼很有可能資料導入過程出錯了,這時,請切換到logging菜單檢視solr日志,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 日志提示有幾個html檔案找不到,我們可以在solr的解壓安裝目錄下可以找到,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後我們需要清掉索引目錄重新執行dataimport操作,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 然後重新開機我們的tomcat,重新執行dataimport操作,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 切換到overview菜單,我們會看到:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 切換到query菜單,對我們剛插入的索引進行查詢測試,如圖:

跟益達學Solr5之從MySQL資料庫導入資料并索引

 ok,至此從資料庫導入資料并索引就講解到這兒了,至于最後抛出的問題就留給你們自己解決啦,最後關于我自定義的日期域類型我會在底下的附件裡上傳,因為iteye不适合上傳大檔案,是以依賴的jar包我就不提供了,需要完整源碼的,請從我提供的百度網盤位址去下載下傳:

     如果你還有什麼問題請加我Q-q:7-3-6-0-3-1-3-0-5,

或者加裙

跟益達學Solr5之從MySQL資料庫導入資料并索引

一起交流學習!

轉載:http://iamyida.iteye.com/blog/2210621