因為項目中要用到solr,因此花了一周多的時間研究了一下solr,其中的各種問題我就不說了,特別是這兩天在研究定時增量索引的時候,心裡不知道多少個XXX在奔騰,好了,廢話不多說,下面把我得研究成果跟大家分享一下,另外對於SOLR是什麼,大家還是自行度娘吧,讓我說我也說不清楚。
SOLR
SOLR最新的版本是5.3,但是我沒有用最新的版本,用的是4.10.4.
JDK
JDK的版本是jdk1.7.0_13,這裡要說一下的就是4.10版本的SOLR需要1.7以上的JDK,剛開始的時候我使用的是1.6版本的JDK,但是部署之後一直在報錯,百度之後換成1.7版本的JDK就沒問題了。
TOMCAT
Tomcat的版本是apache-tomcat-7.0.63,這個無所謂,使用tomcat 6也是可以的。
1.下載solr
從http://apache.dataguru.cn/lucene/solr/4.10.4/下載4.10.4版本的solr到本機,隨便放到一個位置即可。
2.解壓
將下載好的solr4.10.4壓縮包解壓到本地一個文件夾,位置隨意,解壓後的文件夾如下所示:
3.部署
(1)復制example\webapps文件夾下面的solr.war文件到tomcat的webapps目錄下,啟動tomcat解壓solr.war,此時tomcat可能會報錯,但是不用管,只要把solr.war解壓出來即可(當然也可以手動解壓),停掉tomcat,刪除solr.war,不然以後每次啟動都會重新解壓。
(2)回到tomcat的webapps目錄下,記事本打開solr\WEB-INF\web.xml文件。加入如下所示的代碼:
(3)如上面代碼所示,需要創建一個SOLR_HOME文件夾,放在哪個盤符可以自己確定,我的是放在F盤下。
(4)創建SOLR_HOME文件夾完成之後,回到解壓好的solr 4.10.4文件夾,復制example\solr文件夾下面的全部內容到SOLR_HOME文件夾中,復制完成後的SOLR_HOME文件夾如下所示:
其中的dist和contrib文件夾為非必須得,可以不用考慮。
(5)復制example\lib\ex文件夾下的所有jar文件到webapps\solr\WEB-INF\lib下。
(6)此時運行http://localhost:8080/solr,將看到如下所示的頁面:
此時SOLR的環境搭建就完成了(此時只有一個core,solr是支持multicore的,暫時先不說,後面再說),下面開始進行數據的導入:
(1)打開F:\SOLR_HOME\collection1\conf,在此文件夾下面可以看到solrconfig.xml文件,打開該文件,在<config></config>中間添加如下所示的代碼:
(2)此處引入了data-config.xml文件,因此需要在solrconfig.xml的同目錄下創建data-config.xml文件,文件內容如下:
注意:
a.dataSource標簽標示要創建索引的表所在的數據庫,配置信息大家自己看一下就明白需要什麼東西了,我就不多說了。
b.document標簽中的entity關鍵說一下,document中可以有多個entity標簽,一個entity對應一個表,如果是關聯表,那麼需要在entity標簽中嵌套entity標簽,這個以後再說,目前就以單張表來說。
name:表示當前的entity名稱,區分多個entity;
pk:當前實體所對應的表的主鍵;
query:用於全量索引;
後面兩個為增量索引時需要,暫時不說,後面說道增量索引時再說,如果僅僅是全量索引,那麼後面兩個完全沒有必要了;
c.field:對應數據庫中的字段名稱,column對應數據庫字段名稱,name屬性可以自己設置,但是要和schema.xml文件中的field對應;
tuser表結構:
(3)schema.xml配置
a.schema.xml文件和data-config.xml在同一目錄下,打開該文件,配置如下:
注意field字段的配置,name屬性要和data-config.xml中field中的name屬性對應,indexed為true表示對該字段創建索引,stored為true表示在索引文件中存儲該字段的內容,方便查詢時返回,對於內容特別多的字段,或者只需要查詢,但是不需要返回內容的字段,可以設置stored為false;
b.設置索引ID
設置schema.xml文件中的uniqueKey為表中的主鍵,如下所示:
(4)elevate.xml
elevate.xml文件也在solrconfig.xml的同一目錄下,打開該文件,設置如下:
之所以要這麼設置是因為我們表中的id是int類型的,在schema.xml設置了id也是int類型的,但是solr的索引需要string類型的,如果不把上面的兩個<doc>注釋掉,那麼會報錯。
(5)導入jar包
做全量導入的配置文件就是上面這三個了,但是從數據庫導入數據還需要三個jar包,一個是mysql鏈接數據庫的jar包(mysql-connector-java-5.1.21.jar),另外兩個是solr做數據導入的時候需要的,位於解壓的solr 4.10.4文件夾下面的dist文件下面的solr-dataimporthandler-4.10.4.jar和solr-dataimporthandler-extras-4.10.4.jar,將這三個文件放入到tomcat\webapps\solr\WEB-INF\lib下即可。
(6)啟動tomcat,訪問localhost:8080/solr路徑,點擊如下位置:
出現如下菜單,點擊Dataimport菜單,顯示如下頁面:
點擊Execute按鈕,點擊下面的刷新按鈕,等右側變成如下所示時數據導入完成:
此時點擊Query菜單,進入頁面後點擊Execute Query按鈕,即可查詢導入的數據創建的索引:
numFound就是數據庫中數據的記錄數,我數據庫中的數據如下:
可以看到我數據庫中也是只有12條數據,至此全量索引已經導入完成。
今天暫時就寫到這裡,下次會繼續寫增量導入以及定時增量導入。我把我做的一個demo在百度雲上分享了,需要的可以去下載一下,把SOLR_HOME放在F盤即可,如果不想放在F盤的,可以自己改一下solr文件夾下面的WEB-INF中的web.xml中的配置即可。
百度網盤地址是:http://pan.baidu.com/s/1sj9VlOp,文件夾中的內容如下:
Solr文件夾直接放在tomcat下的webapp中即可,SOLR_HOME,如果不想改配置的話可以放在F盤根目錄下,如果放在別的盤的話,需要修改solr中web.xml中的配置,
Sql文件就不用說了吧,大家都懂的,jar文件暫時用不到,做定時增量索引時用到,可以不用管。