Solr是一個高性能命黔,采用Java開發(fā)件豌,基于Lucene的全文搜索服務器。用戶可以通過http請求喷斋,向搜索引擎服務器提交一定格式的XML文件唁毒,生成索引蒜茴;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果浆西。提供了比Lucene更為豐富的查詢語言粉私,同時實現(xiàn)了可配置、可擴展并對查詢性能進行了優(yōu)化近零,并且提供了一個完善的功能管理界面诺核, 是一款非常優(yōu)秀的全文搜索引擎。
一久信、下載和安裝
本次搭建系統(tǒng)環(huán)境為Windows 10 窖杀,Linux類似,以后有時間會加上入篮。
下載Solr陈瘦,這次使用最新的6.1.0版本地址:
http://www.apache.org/dyn/closer.lua/lucene/solr/6.1.0下載容器,選擇比較熟悉的Tomcat潮售,版本選擇Tomcat 8.0 地址:
http://tomcat.apache.org/download-80.cgi-
都是壓縮文件痊项,如果你可以熟練的將壓縮包解壓到相同目錄下,最后看到這倆家伙說明你離成功不遠了..
Paste_Image.png 將
\solr-6.1.0\server\solr-webapp\webapp
文件夾 復制到\apache-tomcat-8.5.4\webapps
下酥诽,并將webapp 修改為solr鞍泉。打開
\apache-tomcat-8.5.4\webapps\solr\WEB-INF\web.xml
,修改以下配置(可能被注釋掉肮帐,先解除注釋)咖驮,將solr/home修改為你的。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<!-- 這個目錄就是配置训枢、索引托修、數(shù)據(jù)以后存放的地方,數(shù)據(jù)量上去后會非常龐大恒界。 -->
<env-entry-value>E:\Server\solr-6.1.0\server\solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其實到這步基本上完事了睦刃,如果你需要打印日志的話,就接著配置6十酣、7涩拙。
- 將
\solr-6.1.0\server\lib\ext
下的所有jar包復制到\apache-tomcat-8.5.4\webapps\solr\WEB-INF\lib
下. - 將
\solr-6.1.0\server\resources\log4j.properties
復制到```\apache-tomcat-8.5.4\webapps\solr\WEB-INF\classes`` 下(如果沒有classes文件夾創(chuàng)建之),好了現(xiàn)在日志也有了耸采。
OK兴泥,現(xiàn)在運行\apache-tomcat-8.5.4\bin\startup.bat
啟動小貓咪, 訪問http://127.0.0.1:8080/solr/index.html/
如果可以成功打開的話虾宇,恭喜你Solr 搭建成功了搓彻,是不是很簡單...
不過這些都是小學生入門級別的配置...,更專業(yè)、詳細的配置見Solr 官方文檔及Tomcat 官方文檔
二好唯、基本操作
有童鞋會說了竭沫,搭建好了然后怎么提供搜索服務呢?別急骑篙,現(xiàn)在的Solr就相當于一個空的數(shù)據(jù)庫蜕提,什么還沒有,首先我們要搞一點數(shù)據(jù)來靶端,那么我們要先創(chuàng)建一個Core(相當于創(chuàng)建數(shù)據(jù)表)這個Core我們叫user_core吧谎势。
- 進入 core home 目錄,我們現(xiàn)在配的是
\solr-6.1.0\server\solr
,在該目錄下創(chuàng)建user_core
文件夾 - 將
\solr-6.1.0\server\solr\configsets\basic_configs\conf
文件夾復制到user_core
文件夾下 -
進入管理頁面杨名,填寫表單脏榆,點擊Add Core。
Paste_Image.png
添加成功后選擇我們的core台谍,執(zhí)行一下查詢须喂,我們可以看到毛豆沒查出來,因為現(xiàn)在core里空空如也~
q 就是查詢參數(shù) *:*相當于查詢所有趁蕊,至于 name:李* 就是查詢所有name以李開頭的行
好了坞生,我們按照下面步驟插入點數(shù)據(jù)吧
- 配置Schema,增加字段(剛才只是相當于創(chuàng)建了數(shù)據(jù)表掷伙,并沒有添加字段)
2.點擊 Add Field是己,增加name(string)、age(int) 兩個字段任柜,現(xiàn)在我們的user_core,有三個字段id卒废、name、age
3.點擊左側是Documents插入數(shù)據(jù)宙地,這里選擇以json的方式摔认,我們插入這條
{'id':1,'name':'土豆','age':20}
試試(這里的update在 id相同時執(zhí)行更新操作,不同則執(zhí)行新增操作)宅粥。
4.插入成功后再執(zhí)行下Query 看看是不是已經(jīng)可以查出來啦参袱。
三、總結
我們可以這樣理解粹胯,Solr相當于數(shù)據(jù)庫蓖柔,Core相當于表辰企,Documents內(nèi)的Field相當于表中的字段风纠。至于操作,很簡單吧牢贸,也就是些CRUD操作竹观,比操作數(shù)據(jù)庫還簡單點,但是比數(shù)據(jù)庫快多了。
Solr 提供以HTTP 請求的形式的API臭增,任何語言都可以與之交互懂酱,下篇文章將介紹如果使用SolrJ 以Java 編程方式操作Solr,這也是使用Solr最普遍的形式誊抛。
本文是筆者剛接觸Solr時寫下的列牺,如果你想更多的了解 Solr 及 Solr Cloud請閱讀我的文集,那里更加完善 ->Solr&Solr Cloud