solr6.4.1搜索引擎(2)首次同步mysql數據庫

還沒有成功啓動solr的,請參考個人另外一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎啓動eclipse啓動)
本篇文章主要介紹如何同步mysql數據庫
 
添加core命名爲core3(以前試驗了好幾個都失敗了…)
注意,這裏的兩個輸入框*Dir若是不指定目錄,那麼默認這個core3目錄將應該在solrhome根目錄下,instanceDir和dataDir必須是兩個已存在的目錄
我這裏的core3目錄是D:\solr\solrhome\core3(這個core3目錄也要先創建出來)
 
先不要點擊按鈕Add Core,由於會報錯:
Error CREATEing SolrCore 'core3': Unable to create core [core3] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'D:\solr\core3'
爲了不這個錯誤,咱們首先須要爲這個core3作一些準備工做,包括要把Add Core中的solrconfig.xml和schema.xml文件都建立出來。主要分爲如下幾步:
第一步:建立solrconfig.xml
由於是同步數據庫,因此找的是db目錄下的solrconfig.xml, D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml
(上圖工具使用的是一個windows搜索器:Everything.exe)
複製D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml黏貼到D:\solr\solrhome\core3目錄下。
修改D:\solr\solrhome\core3\solrconfig.xml,把<lib dir= 標籤這7個節點裏的${solr.install.dir:../../../..}替換爲本地solr根目錄D:/solr/solr-6.4.1
第二步:建立db-data-config.xml
由於在D:\solr\solrhome\core3\solrconfig.xml中,提到使用db-data-config.xml來導入數據
因此同理,複製db目錄下的db-data-config.xml到D:\solr\solrhome\core3\目錄下
重點1:db-data-config.xml中,url地址中的&符號必須替換爲&amp;不然會報錯:
Data Config problem: 對實體 "useUnicode" 的引用必須以 ';' 分隔符結尾。
如下是我本地的db-data-config.xml文件
重點2:全部field標籤的name值都必須存在於schema.xml中!(參考第三步:建立schema.xml)
第三步:建立schema.xml
複製D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\managed-schema黏貼爲D:\solr\solrhome\core3\schema.xml,這個schema.xml就是Add Core界面的schema文件。
重點1:schema.xml文件定義了全部咱們須要在數據庫中同步過來的字段,其中db-data-config.xml中導入的字段必需要存在於該schema.xml中因此schema.xml文件決定了在整個solr應用中,全部的字段必須不能重複!建議在solr中對字段命名時採用表名_字段名方式。
重點2:schema.xml文件中全部的<field標籤中required="true"屬性標誌着你全部在solr中的查詢都必須有一個字段是這些字段,並且必須有值,不然報錯:SolrException missing required field: id
重點3:當點擊Add Core按鈕以後,原先的D:\solr\solrhome\core3\schema.xml文件將被刪除,隨之增長D:\solr\solrhome\core3\conf\managed-schema(注意,沒有後綴名)
如下是我本地的managed-schema文件

注意,不要缺失<uniqueKey>w10_id</uniqueKey>標籤,不然會報錯:html

core3: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: QueryElevationComponent requires the schema to have a uniqueKeyField.
第四步:複製stopwords_*.txt文件到D:\solr\core3\lang\目錄下
全部的D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_*.txt文件
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_el.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_en.txt
it;id;hy;lv;hu;pt;tr;de;hi;da;cz;th;sv; 等等txt文件,總共有31個
第五步:複製如下文件到D:\solr\core3\lang\目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_it.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ca.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_fr.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\hyphenations_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stemdict_nl.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stoptags_ja.txt
第六步:複製elevate.xml到conf目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\elevate.xml複製到D:\solr\core3\conf
第七步:複製如下文件到D:\solr\core3\目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\protwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\synonyms.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\stopwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\currency.xml
第八步:重啓tomcat,訪問solr,增長core
增長一個core就至關於增長了一個數據庫,solr本就支持數據庫集羣,支持以json格式存儲數據
點擊Core Admin菜單,輸入core信息,點擊Add Core按鈕:
創建成功以後能夠查看core3的位置信息:
ps: 若是啓動過程當中有遇到*.lock文件而報錯,那麼刪除該lock文件從新創建一遍既可成功。
 
第九步:gui界面導入mysql數據庫
下拉框選擇剛剛創建的core3,選中Dataimport菜單
先檢查core3加載的db-data-config.xml文件是否有效,點擊Reload按鈕校驗,當出現信息No information available時則表示校驗經過。
初次導入選擇full-import全量導入模式,點擊Execute按鈕執行數據導入,頁面右邊顯示Indexing since則表示正在導入中,在導入過程當中,點擊Refresh Status則會顯示詳細的導入信息(Requests,Fetched,Skipped),以下圖右圖所示:
若是導入失敗,須要重來一遍,在選擇勾選clean選項(清除以前全部導入索引)外,也能夠考慮直接刪除數據文件,地址在core3根目錄下,有個data文件夾:D:\solr\solrhome\core3\data。

注意勾選上選項 Auto-Refresh Status,這個會自動幫你刷新數據導入狀態信息,信息大概變化以下:mysql

請求第一個entity,我這裏是w10,數據10萬量的表sql

請求第二個entity,我這裏是w100, 數據100萬量的表數據庫

 請求第三個entity,我這裏是w1000, 數據1000萬量的表
導入成功後,信息界面顯示以下:
數據導入成solr索引成功,總共花費了5分鐘06秒。這時候就能夠去掉勾選項Auto-Refresh Status
 
第十步:gui界面查看導入數據
選擇core3,點擊菜單Query,什麼查詢條件都不要加,點擊Execute Query按鈕
查詢出solr同步數據以下,表示同步mysql數據成功:
 
上圖中,http地址表示這次查詢可使用這樣的get請求方式,其中status 0 表示查詢成功,params表示這次查詢使用的查詢參數。這裏顯示的全都是默認值。response裏的數據表明查詢到的數據,能夠看到已經查詢成功。
 
 第十一步:solr數據狀態

選擇core4,點擊overview,當在tomcat重啓後,有可能出現上圖中的optimize now,而且Optimized狀態顯示爲叉叉,這是solr在告訴你這個core4的數據索引並無按照solr的索引排序以達到最佳查詢狀態,只須要點擊optimize now進行索引從新排序就能夠了。apache

可是注意,這須要花費必定時間,因此會損失性能,固然,從新排序後,性能會提升。json

相關文章
相關標籤/搜索