使用Solr為應(yīng)用提供搜索服務(wù)(2)搭建&配置

在Solr 5.X以后,無論你是在Windos下還是在Linux下搭建Solr、Solr Cloud的都是極其簡單的,因?yàn)镾olr提供了很多快速搭建腳本并且都包括sh、bat兩種版本。

環(huán)境

  1. OS:Linux
  2. JDK:1.7
  3. Solr:5.5.3

本文以Solr 5 的最后一個(gè)發(fā)行版5.5.3作為Solr的版本,因?yàn)?.X官方建議的JDK版本是Java 8,下載地址:http://apache.fayea.com/lucene/solr/5.5.3/

快速搭建

//1.下載
$ wget http://apache.fayea.com/lucene/solr/5.5.3/solr-5.5.3.tgz
//2.將它移動(dòng)到你想要的目錄下,操作省略。
//3.解壓
$ tar -zxvf solr-5.5.3.tgz
//4.進(jìn)入solr-5.5.3目錄下執(zhí)行下面命令$ ./bin/solr start
Waiting up to 30 seconds to see Solr running on port 8983 [/]  Started Solr server on port 8983 (pid=24120). Happy searching!
//只需這4步,一個(gè)單節(jié)點(diǎn)的Solr Server就搭建完成了,端口默認(rèn)為8983,快去訪問它吧!

**./bin/solr **這個(gè)腳本非常重要,是官方提供操作Solr的入口腳本,通常我們啟動(dòng)單點(diǎn)的Solr Server只會(huì)涉及三個(gè)命令,start、stop、status,使用start命令啟動(dòng)時(shí)可以通過-s 指定solr home目錄,-p 指定端口;使用stop命令關(guān)閉時(shí)可以使用-p指定要關(guān)閉的服務(wù)的端口,使用-all關(guān)閉所有服務(wù);使用status來查看服務(wù)的狀態(tài)。

下面鏈接是官方文檔對(duì)該腳本的說明,最好花幾分鐘快速瀏覽一遍。
https://cwiki.apache.org/confluence/display/solr/Solr+Start+Script+Reference

提示:使用./bin/solr 啟動(dòng)的Solr使用內(nèi)嵌的Servlet容器 Jetty,這也是官方建議的,同時(shí)這也和Spring Boot的理念相契合,應(yīng)用本來就是易于使用的,內(nèi)嵌容器也將是未來Java Web 應(yīng)用的趨勢(shì)。筆者在學(xué)習(xí)Solr的過程中也翻閱過一些博文,大部分還是使用Tomcat來搭建Solr,筆者對(duì)此感到困惑,不過你依然可以使用Tomcat,不過搭建就沒有這么簡便了~

HTML UI

順利啟動(dòng)后~訪問http://your_server_ip:8983/solr 便可進(jìn)入Solr 的管理界面,點(diǎn)我查看官方用戶界面介紹

更進(jìn)一步

搭建完成后,我們需要通過Core Admin 來創(chuàng)建一個(gè)Core,就是上篇文章所說的那個(gè)Core,你可以把它理解為在數(shù)據(jù)庫服務(wù)器上創(chuàng)建了一個(gè)新的數(shù)據(jù)庫,雖然并不是那么恰當(dāng)。

Add Core

通常在點(diǎn)擊Add Core的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)镾olr 在solr-home目錄并找不到相應(yīng)的配置文件,因?yàn)槲覀儐?dòng)的時(shí)候并沒有指定solr-home目錄,也并沒有添加相應(yīng)的配置文件。

現(xiàn)在我們需要停掉該服務(wù),增加solr-home目錄,并添加配置文件后,重新啟動(dòng)它。

//1.先停止先前啟動(dòng)的服務(wù)(如果你不使用-p或-all的話默認(rèn)關(guān)閉的就是端口為8983的服務(wù))
$ ./bin/solr stop //2.創(chuàng)建solr-home目錄(目錄,名字隨意~)
$ cd ~$ mkdir solr-home
//3.復(fù)制solr.xml配置文件
$ cp solr-5.5.3/server/solr/solr.xml ./solr-home/
//4.復(fù)制一份core配置文件
$ cp -rf solr-5.5.3/server/solr/configsets/data_driven_schema_configs/ ./solr-home/
//5.修改core配置文件夾名稱(這里使用test-core,稍后創(chuàng)建的core要與之匹配)
$ mv ./solr-home/data_driven_schema_configs/ ./solr-home/test-core
//6.指定solr-home,并啟動(dòng)Solr Server
$ cd ./solr-5.5.3
$ .bin/solr start -s ~/solr-home
Add Core

這時(shí),輸入name、instanceDir后就可以創(chuàng)建一個(gè)Core了,成功后通過下面的Core Selector便可進(jìn)入該Core,就像進(jìn)入數(shù)據(jù)庫服務(wù)器,選擇DB一樣~

Execute Query

點(diǎn)擊查詢便可進(jìn)行查詢操作,不過現(xiàn)在應(yīng)該沒有索引文檔,所以結(jié)果為空~

現(xiàn)在我們可以添加一些索引,在添加索引之前,我們要?jiǎng)?chuàng)建一些字段,就像數(shù)據(jù)庫創(chuàng)建一張表需要添加Column一樣,添加之前我們看看Solr 已經(jīng)為我們創(chuàng)建了什么字段,看下圖。

Document Field

這些字段統(tǒng)一由managed-schema文件來管理、配置(Solr 5 以前叫schema.xml),它位于solr-home/test-core/conf目錄下,通過編輯它便可進(jìn)行配置,官方字段類型介紹非官方比較好的講解。
我們可以嘗試添加一個(gè)文檔到索引,就以下面JSON(當(dāng)然也可以是其他格式)為例。

{'id':'1','author':'李恒名','title':'使用Solr為應(yīng)用提供搜索服務(wù)(2)搭建&配置'}
Add Document

再次查詢,便可查詢到該文檔~

Paste_Image.png

此時(shí)有必要簡略的說一下查詢語法了

  1. q代表查詢參數(shù):查詢所有,author:李查詢作者以李開頭的,類似于SQL的Where語句。*
  2. start,rows 分頁參數(shù)
  3. wt 返回類型
  4. 更多請(qǐng)點(diǎn)擊這篇文章查看官方文檔

使用分詞器

如果沒有使用分詞器的話,我們要查詢標(biāo)題內(nèi)包含“服務(wù)”這個(gè)關(guān)鍵詞的文檔的話,通常需要這樣寫title:服務(wù),類似于SQL TITLE LIKE '%服務(wù)%',這樣顯而易見會(huì)降低性能。如果可以把“使用Solr為應(yīng)用提供搜索服務(wù)(2)搭建&配置”,拆分為“使用”、“Solr”、“應(yīng)用”、“提供”等等這樣的詞匯再進(jìn)行索引的話,那么我們使用title:服務(wù)便可快速索引到該文檔,要達(dá)到該目的,我們需要為Solr添加分詞器,這里我們使用IKAnalyzer作為我們中文分詞器的選擇,下面是步驟。

  1. 下載JAR包,下載地址(IKAnalyzer2012FF_u2只有該版本在Solr 5.5.3下可以正常工作)。
  2. 想辦法將JAR包放入/home/solr/solr-5.5.3/server/solr-webapp/webapp/WEB-INF/lib下(相信你可以做到)。
  3. 編輯managed-schema, 在<schema>標(biāo)簽內(nèi)添加分詞fieldType,并使用它,參考下面代碼片段
//配置分詞器fieldType
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
//將type改為分詞器類型
<field name="title" type="text_ik" indexed="true" stored="true"/>
  1. 重啟SOLR
使用中文分詞器

至此,單節(jié)點(diǎn)Solr 的搭建和配置就到此為止了,由于Solr 提供的是HTTP REST接口,所以我們可以很容易的通過GET請(qǐng)求 訪問API 獲得JSON/XML響應(yīng)來使用Solr提供的索引服務(wù)。


下篇文章:Solr Cloud

我只是官方文檔的搬運(yùn)工,如果你要使用Solr 強(qiáng)烈建議閱讀官方文檔,寫的非常完善,傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評(píng)論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,067評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,184評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,582評(píng)論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,794評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,343評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,096評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,291評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,513評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評(píng)論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,026評(píng)論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,253評(píng)論 2 375

推薦閱讀更多精彩內(nèi)容