真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql導(dǎo)入數(shù)據(jù)到solr的方法

本文主要給大家介紹MySQL導(dǎo)入數(shù)據(jù)到solr的方法,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻可供大家參考,從現(xiàn)實意義來講,創(chuàng)新互聯(lián)累計多年的實踐經(jīng)驗可分享給大家。

創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站設(shè)計、網(wǎng)站制作,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。

1      mysql導(dǎo)入數(shù)據(jù)到solr

方式一:創(chuàng)建項目,查詢出數(shù)據(jù),一條一條add到solr中;(不推薦)

方式二:通過配置復(fù)制數(shù)據(jù)到solr中

以上已完成了在本地window8中對solr的部署,為solr添加了一個自定義的coredemo,并且引入了ik分詞器。

那么該如何將本地的mysql的數(shù)據(jù)導(dǎo)入到solr中呢?

1.1    準備工作

1.1.1     準備數(shù)據(jù)源

mysql數(shù)據(jù)源:test庫中的user表(7條數(shù)據(jù)),其中這個update_time字段是用于solr更新數(shù)據(jù)庫數(shù)據(jù)的依據(jù),表中必須得有這個字段。

 mysql導(dǎo)入數(shù)據(jù)到solr的方法

SETFOREIGN_KEY_CHECKS=0;

 

------------------------------

-- Table structurefor user

------------------------------

DROP TABLE IFEXISTS `user`;

CREATE TABLE`user` (

  `id` int(10) NOT NULL AUTO_INCREMENT,

  `name` varchar(30) DEFAULT NULL,

  `sex` int(1) DEFAULT NULL,

  `title` varchar(200) DEFAULT NULL,

  `insert_time` datetime DEFAULT NULL,

  `update_time` datetime DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDBAUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

 

------------------------------

-- Records of user

------------------------------

INSERT INTO `user`VALUES ('1', '航三', '1', '有電腦','2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('2', '理三', '1', '有電腦,生活就是游戲么。要努力啊', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('3', '李四', '0', '準備工作完成之后就可以進行配置和操作了。', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('4', '王五', '0', '這個demo主要是針對多圖片上傳時使用的,可以攜帶動態(tài)加載的參數(shù)。', '2017-05-02 15:40:19', '2017-05-0315:40:22');

INSERT INTO `user`VALUES ('5', '趙六', '1', 'demo里也有,多文件上傳+預(yù)覽功能。也可以自己去調(diào)U', '2017-05-25 15:43:03', '2017-05-25 15:43:07');

INSERT INTO `user`VALUES ('6', '周七', '0', '這個demo主要是針對多圖片上傳時使用的', '2017-05-02 15:43:23', '2017-05-11 15:43:26');

INSERT INTO `user`VALUES ('7', '李白', '1', '詩人','2017-05-02 15:43:23', '2017-05-02 15:43:25');

 

1.1.2     準備需要的jar

鏈接mysql驅(qū)動jar:mysql-connector-java-5.1.14.jar(這個基本都有)

和D:\solr-4.10.2\dist\solr-dataimporthandler-4.10.2.jar

mysql導(dǎo)入數(shù)據(jù)到solr的方法

1.1.3     準備配置

從solr的解壓文件目錄中找到“D:\solr-4.10.2\example\example-DIH\solr\db\conf”下的db-data-config.xml文件到你的core(比如:

D:\solr-4.10.2\example\demo-solr\demo\conf)conf目錄下,并更名為data-config.xml。

詳細配置如下:

   

       url="jdbc:mysql://localhost:3306/test" user="root"password="123456"

        batchSize="100" />

   

       

            query="SELECTid,name,sex,title,insert_time,update_time FROM user"

            deltaImportQuery="SELECTid,name,sex,title,insert_time,update_time FROM user whereid='${dataimporter.delta.id}'"

            deltaQuery="SELECT id FROMuser where update_time > '${dataimporter.last_index_time}'">

           

           

           

                    

           

           

       

   

deltaImportQuery:獲取增量數(shù)據(jù)時使用的SQL(增量導(dǎo)入時使用)

deltaQuery:獲取pk的SQL(增量導(dǎo)入時使用)

注意查詢條件的寫法:${..},如在本例中:

${dataimporter.last_index_time}索引上次導(dǎo)入時間

${ dataimporter.delta.id}實體user查詢結(jié)果中的id,也可以用${user.id}表示

關(guān)于data-config.xml詳解,參考博文:

http://www.jianshu.com/p/91a5a0c35475

http://blog.csdn.net/boolbo/article/details/50352331

1.2    配置實現(xiàn)

注意:如果是solr是使用tomcat進行啟動,只是相關(guān)的jar和配置文件放的位置不一樣。配置是一致的。

1、 拷貝mysql-connector-java-5.1.14.jar和solr-dataimporthandler-4.10.2.jar到solr的D:\solr-4.10.2\example\solr-webapp\webapp\WEB-INF\lib目錄中;

 

mysql導(dǎo)入數(shù)據(jù)到solr的方法

2,在D:\solr-4.10.2\example\demo-solr\demo\conf目錄下,更改solrconfig.xml配置文件。添加如下內(nèi)容:

   

         data-config.xml

   

 

3,在D:\solr-4.10.2\example\demo-solr\demo\conf目錄下,更改schema.xml配置,配置相關(guān)字段:

 

  

  

  

  

  

  

  

  

  

  

 

       id

      

   

   

      

      

         

       

      

 

 

4,重啟solr應(yīng)用,查看原有的數(shù)據(jù):

mysql導(dǎo)入數(shù)據(jù)到solr的方法

還是原來的那些數(shù)據(jù)。

5,導(dǎo)入mysql數(shù)據(jù)到solr中:

選擇Dataimport進行導(dǎo)入操作。

mysql導(dǎo)入數(shù)據(jù)到solr的方法

查詢:

mysql導(dǎo)入數(shù)據(jù)到solr的方法

證明數(shù)據(jù)已經(jīng)導(dǎo)入,并刪除了原來的數(shù)據(jù)!

 

2      刪除所有數(shù)據(jù)

mysql導(dǎo)入數(shù)據(jù)到solr的方法

Documents運行/update,指定type為xml。先查詢后刪除:

語句為:

*:*

Submit,執(zhí)行刪除!

mysql導(dǎo)入數(shù)據(jù)到solr的方法

當然,上面說的是手動刪除,如果要刪除的數(shù)據(jù)很多,想在下一次自動同步數(shù)據(jù)的時候自動刪除指定的數(shù)據(jù)該如何做呢?

2.1    條件刪除solr數(shù)據(jù)(在增量導(dǎo)入數(shù)據(jù)的過程中刪除)

場景:有一批要拍賣的店鋪數(shù)據(jù)存儲在solr中,拍賣的店鋪數(shù)據(jù)有一個拍賣結(jié)束時間(endTime),當拍賣結(jié)束時間一到,這條存儲在solr中的拍賣數(shù)據(jù)就沒有意義了,想要刪除這條存儲在solr中的數(shù)據(jù)。

按照上面的手動刪除也不是不可以,但這人工操作未免太扯了,到時間人工去solr中刪除這條數(shù)據(jù)耗時又耗力,也不太現(xiàn)實。

解決辦法就是:

data-config.xmlentity中添加:

deletedPkQuery="select id from shops where endTime < NOW()"

 

這一句,這句和entiy的query同級,目的是查詢出所有店鋪數(shù)據(jù)中結(jié)束時間小于當前時間的店鋪id,

這個店鋪id會和deltaQuery中收集到的id一并執(zhí)行deltaImportQuery操作,只不過一個是添加數(shù)據(jù),一個是刪除數(shù)據(jù)。

 

注意:這個配置在導(dǎo)入數(shù)據(jù)成功后,無效果。只在導(dǎo)入過程中有效果!

 

3      性能優(yōu)化

1、 將所有只用于搜索的,而不需要作為結(jié)果的field(特別是一些比較大的field)的stored設(shè)置為false;

2、 將不需要被用于搜索的,而只是作為結(jié)果返回的field的indexed設(shè)置為false;

3、 刪除所有不必要的copyField聲明為了索引字段的最小化和搜索的效率;

4、 將所有的 text fields的index都設(shè)置成false,然后使用copyField將他們都復(fù)制到一個總的 text field上,然后進行搜索。

看了以上介紹mysql導(dǎo)入數(shù)據(jù)到solr的方法,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,大家可以繼續(xù)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊板塊,會定期給大家更新行業(yè)新聞和知識,如有需要更加專業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時售前售后,隨時幫您解答問題的。

 


文章題目:mysql導(dǎo)入數(shù)據(jù)到solr的方法
瀏覽地址:http://weahome.cn/article/ihohcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部