mysql打平子表_solr初步学习
前段時間自己簡單的學習了一下Elasticsearch,但是我們目前開發項目中其實使用的還是solr,自己之前雖然也接觸過solr,但是并沒有系統的學習過,所以這次準備系統的學習一下。另外我看到網上很多solr服務都是和tomcat整合使用的,這點我確實不太理解(solr是個web項目沒錯,但是沒感覺到它需要基于tomcat來使用),這次自己也是單獨使用solr的,沒有和tomcat做整合。
一、安裝
首先下載solr,下載地址,然后選擇相應的目錄,我本地安裝位置:
/home/ypcfly/ypcfly/software/solr/solr-7.5.0
// 常用命令
./solr start
./solr restart
./sorl stop
解壓以后直接進入到安裝路徑下的bin目錄,執行啟動命令啟動solr服務,啟動成功后,打開瀏覽器訪問:
localhost:8983/solr
圖-1.png
表示服務器已經成功啟動了,接下來我們需要創建一個core,一個solr服務是可以有多個core的,創建core可以直接通過命令創建
./solr create –c "core name"
也可以通過后臺管理頁面手動創建。先進入到 /home/ypcfly/ypcfly/software/solr/solr-7.5.0/server/solr目錄下,創建一個文件夾"custom_core",并復制同目錄下的configsets文件夾下的"conf"文件夾到"custom_core",然后進入solr的后臺管理頁面,如下圖:
圖-2.png
如果創建過程中出錯,按照錯誤信息提示修改就可以了,這個過程還是很簡單的。最后在"core selector"下可以選擇自己的core,并進行其他的操作,到這里solr的安裝以及core的創建就完成了。
二、數據導入
core創建好了之后,solr還沒有數據,所以需要從數據庫批量添加數據到solr服務器。數據導入可以通過solr后臺管理頁面導入,也可以通過代碼操作solr客戶端導入,這里就簡單的通過后臺管理頁面導入數據。先選擇需要導入數據的core,然后選擇Dataimport,如下圖:
圖-3.png
但是,在導入之前我們還有兩個很重要的事情需要處理:一是配置導入數據需要的處理器;二是配置數據源。
1、配置導入數據處理器
打開 /home/ypcfly/ypcfly/software/solr/solr-7.5.0/server/solr/cutom_core/conf/solrconfig.xml文件,添加導入數據處理器,這個和其他的處理器放在一起就可以了。
//配置文件的路徑應該也可以使用絕對路徑
dataConfig.xml
2、配置數據源
然后在conf文件夾下新建一個dataConfig.xml文件(名字自己隨意取,只需要和上面solrconfig配置中的名稱一致即可),并配置數據源和相關的document,也就是需要導入的數據。solr的數據源是支持多個數據庫的,比方我可以使用mysql的user表,同時使用postgresql的order表,只是相對復雜一點,多庫的情況個人感覺應該很少見。具體可以見solr官方文檔,我依然使用的是postgresql數據庫,其他數據庫一樣的格式。這里我document配置了最簡單的單表查詢。entity就是我們的"實體",column就是表的列名,name是對應的solr的Field。
driver="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/springboot"
user="postgres" password="123456"/>
數據源的配置文件配置好以后,需要將數據庫查詢的column的名字和solr中Field的名字對應起來,所以還需要在schema配置文件添加相關的Field,打開conf下面的managed-schema文件,添加相應的Field。
自定義Field的類型必須是solr已有的類型,indexed表示改字段是否支持索引,stored表示是否會存儲。至于為什么我沒添加id,那是因為solr已經有了id字段,所以不需要用戶再去定義了。
最后一個是導入相關的jar包,因為數據導入我們使用到了數據庫,所以必須要有數據庫驅動的jar,另一個就是solr自帶的data-import的jar。數據庫驅動根據自己數據庫選擇,而solr自帶的兩個相關jar包,可以在solr解壓目錄"dist"目錄下找到,而我本地路徑:
/home/ypcfly/ypcfly/software/solr/solr-7.5.0/dist
一個是solr-dataimporthandler-7.5.0.jar,另一個是solr-dataimporthandler-extras-7.5.0.jar。將這三個jar包復制到"../server/solr-webapp/webapp/WEB-INF/lib"文件夾下。
然后重新啟動solr服務器。
3、數據導入
啟動好solr服務器后,打開solr后臺管理頁面,選擇"Dataimport",勾選上"圖-3"中的"Clean"和"Commit",然后點擊"Excute"執行成功后,在點擊旁邊的"Refresh status",如果報錯的話根據報錯信息進行排除即可。然后我們查詢一下數據是不是真的導入成功,選擇查詢所有數據,看結果是否一致就可以了。
圖-4.png
結果總共有4條記錄和我數據的數據完全一致,說明數據導入成功了。
三、安裝IK分詞器
其實solr也好elasticsearch一般都會配置單獨的中文分詞器,根據需要可能會選IK或者pingyin,也可能都安裝,下面簡單記錄下安裝IK中文分詞的過程。solr也是有自帶分詞器的,但是對中文支持并不好,所以都會需要安裝專門的中文分詞器。
1、配置IK
先根據自己solr版本下載相應的IK分詞器包,下載地址。感覺solr版本的IK下載地址不太好找,不像Elasticsearch非常容易找到每個版本對應的IK。下載的時候選擇jar格式,下載之后將jar包復制到"../server/solr-webapp/webapp/WEB-INF/lib"文件夾下,我的本地路徑是:
/home/ypcfly/ypcfly/software/solr/solr-7.5.0/server/solr-webapp/webapp/WEB-INF/lib
然后在WEB-INF文件夾下新建一個"classes"文件,復制IK分詞器需要的相關配置文件(我是從jar包解壓獲取的)到classes目錄下,其實主要就一個,那就是"IKAnalyzer.cfg.xml",也就是IK的配置文件,內容也不多,如果找不到直接復制就行
IK Analyzer 擴展配置
custom.dic;
stopword.dic;
在上面的配置文件中我已經自定義了我的用戶詞典,當然還沒用配置相關的詞。用戶詞典應該也可以配置遠程字典的,但是這里不知道為什么沒有。
2、配置schema
這里我們需要打開"core"/conf目錄下的"managed-schema"文件,然后添加上IK的分詞器的配置內容:
名字自己隨意就好了,到這里關于IK分詞器的整個配置就完成了,接下來使用IK分詞器測試一下
3、測試
配置IK完成后啟動solr服務器,選擇自定義的core,選擇"Analysis",隨意輸入一段中文,然后選擇到"ik_word"(和上面managed-schema配置中自己定義名稱一致),點擊右側"Analyse Values",結果如下:
圖-5.png
這個時候我自定義的用戶字典還每沒添加任何的詞語,但是根據結果也看出來,其實IK已經幫我們做了一些分詞了,只是效果比較差,更多的還是一個一個的漢字,下面是分詞結果:
嵎 山金 金碧 有 光輝 遷 停車 車馬 正 輕 肥 彌 思 王 褒 擁 節 去 復 憶 相 如 乘 傳 歸 君 平 子 云 寂 不 嗣 江漢 漢英 英靈 已 信 稀
這是IK默認的分詞效果,現在我們使用我們自己的那字典,然后再測試一下。先進入相關的文件夾,即
/home/ypcfly/ypcfly/software/solr/solr-7.5.0/server/solr-webapp/webapp/WEB-INF/classes
打開自定義的字典文件custom.dic,并添加幾個詞語,我添加的詞語如下:
嵎山 正輕肥 彌思王褒 復憶 乘傳歸 君平子云 已信稀
也就是說這些詞會被solr單獨分出來作為一個不可分的最小單元,完成后重新啟動solr再測試一次,結果如下:
圖-6.png
相比第一次沒添加的時候已經好些了,整個分詞結果如下:
嵎山 山金 金碧 有 光輝 遷 停車 車馬 正輕肥 彌思王褒 擁 節 去 復憶 相 如 乘傳歸 君平子云 寂 不 嗣 江漢 漢英 英靈 已信稀
通過兩次分詞結果對比很直觀的就發現,自定義字典里的詞都已經分出來了,但是感覺效果還是不太好,我記得IK應該是可以指定最大分詞和最小分詞的,但是和solr的整合中自己還沒有發現這個功能。
好了,這次關于solr的入門學習先到這里,關于solr的一些基本操作下次再繼續學習吧,到時候可以通過一個簡單的demo,學習一下如何在代碼中使用solr。
總結
以上是生活随笔為你收集整理的mysql打平子表_solr初步学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql mariadb并存_Mari
- 下一篇: 交换机短路_融商通达变频器功率模块短路维