標籤:
SOLR文檔前言
因為項目中要用到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檔案暫時用不到,做定時增量索引時用到,可以不用管。
SOLR環境搭建以及全量匯入MYSQL資料