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>標簽,否則會報錯:

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,這個會自動幫你刷新數據導入狀態信息,信息大概變化如下:

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

請求第二個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進行索引重新排序就可以了。

但是注意,這需要花費一定時間,所以會損失性能,當然,重新排序后,性能會提高。

 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM