Solr 環(huán)境搭建(windows)

1 準(zhǔn)備工作及相關(guān)介紹

solr和lucene的版本是同步更新的,最新版本是6.5.0。本案例使用4.10.3

java運(yùn)行環(huán)境 jdk1.7以上

mysql 5.x

tomcat7

sor歸檔文件地址: http://archive.apache.org/dist/lucene/solr/? 選擇你需要的版本和操作系統(tǒng)對(duì)應(yīng)的文件枉层。windows下載*.zip的文件吞琐。以solr-4.10.3.zip為例,解壓后獲得以下目錄結(jié)構(gòu):




solr的安裝需要涉及到solrhome與solrcore等基本概念。安裝配置solr其實(shí)與我們安裝sql數(shù)據(jù)庫(kù)類似只损,solrhome相當(dāng)于是一個(gè)home目錄,它下面包含了多個(gè)數(shù)據(jù)集合solrcore七咧。在mysql中跃惫,我們使用工具navicat時(shí),需要建立連接艾栋,然后再這個(gè)連接里建立數(shù)據(jù)庫(kù)爆存,在對(duì)應(yīng)的數(shù)據(jù)庫(kù)里建立數(shù)據(jù)表。solrhome在這里就可以理解為“數(shù)據(jù)庫(kù)”,solrcore理解為“數(shù)據(jù)表”蝗砾。

安裝

tomcat及java運(yùn)行環(huán)境這里不做介紹先较。我們需要將solr的war包復(fù)制到tomcat下携冤,并添加相關(guān)依賴包,相關(guān)的配置闲勺。

這里約定我的目錄結(jié)構(gòu)曾棕,solr的資源包解壓的目錄為d:\solr-4.10.3 以下簡(jiǎn)稱solr_4.10.3

tomcat的目錄為d:\dev\tomcat\tomcat7-solr ?以下簡(jiǎn)稱catalina_home

自定義的solrhome目錄為D:\develop\12-solr\solrhome 以下簡(jiǎn)稱solr_home

1 (目的:將官方資源包下的solr.war拷貝到本地tomcat下使用)拷貝solr.war

? 從solr下載的目錄solr_4.10.3\example\webapps 下solr.war到catalina_home\webapps目錄。在tomcat目錄下catalina_home\bin下點(diǎn)擊startup.bat 啟動(dòng)容器菜循。此時(shí)solr.war會(huì)被解壓出來(lái)翘地,將webapps下的solr.war刪除,保留解壓后的solr文件夾债朵。

2 添加擴(kuò)展服務(wù)包子眶,將solr_4.10.3\example\lib\ext 下的所有jar包(依賴日志包)拷貝到tomcat catalina_home\webapps\solr\WEB-INF\lib 下

3 配置文件添加修改

復(fù)制solr_4.10.3\example\resources 下log4j.properites 到catalina_home\webapps\solr\WEB-INF\classes 并修改catalina_home\webapps\solr\web.xml 指定solr/home的配置(將注釋取消并修改)如下

找到env-entry-name為solr/home,配置env-entry-value為D:\develop\12-solr\solrhome ?(solr-home的目錄按你的指定)序芦。

3 solrhome和solrcore的安裝

solrhome是solr服務(wù)運(yùn)行的主目錄,一個(gè)solrhome包含多個(gè) solrcore粤咪,一個(gè)solrcore目錄里有一個(gè)solr實(shí)例運(yùn)行和配置的文件和數(shù)據(jù)谚中,每個(gè)solrcore都可以獨(dú)立對(duì)外提供搜索和索引服務(wù)。多個(gè)solrcore是相互獨(dú)立的寥枝。在下載的資源文件中solr_4.10.3\example\solr(就是solrhome)下包含一個(gè)文件夾collection1(就是solrcore)宪塔,solrcore下包含conf,core.properties,README.txt,data(默認(rèn)的solr數(shù)據(jù)目錄,包含索引文件和tlog日志信息)囊拜。所謂solrcore和solrhome的安裝就是以上文件的拷貝和配置某筐。

由于tomcat下的solr服務(wù)中的web.xml指定了solrhome目錄(D:\develop\12-solr\solrhome)將solr_4.10.3\example\solr下的所有文件拷貝到D:\develop\12-solr\solrhome (solrhome,solrcore基本安裝完成冠跷,還差配置)南誊。

solrcore配置,solrcore/conf目錄下有個(gè)solrconfig.xml的配置文件蜜托。在該文件里主要配置lib,datadir,requestHandler(如果不配置抄囚,使用的是默認(rèn)的配置)

到此,基本的安裝就結(jié)束了橄务,重啟tomcat服務(wù)器幔托,訪問(wèn)本地服務(wù)器/solr就可以進(jìn)入solr的dashboard。

solrconfig.xml

solrcore下config里有一個(gè)文件solrconfig.xml用來(lái)配置solrcore的運(yùn)行信息蜂挪。核心包含lib,datadir,requestHandler

lib標(biāo)簽

solrcore需要添加擴(kuò)展依賴包,通過(guò)lib就可以指定依賴包的地址

例如其中的一個(gè)配置(這是solr_4.10.3\example\solr\collectioin1\conf\solrconfig.xml下的配置文件)

<lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />

<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />

這里lib的元素dir,regex表示要指定lib的目錄和匹配的表達(dá)式重挑。solr.install.dir表示solrcore的安裝目錄。../代表跳轉(zhuǎn)文件上一級(jí)棠涮。${solr.install.dir:../../..}其實(shí)就到了solr_4.10.3目錄谬哀,這個(gè)目錄里有contrib,bin,dist,docs,example。很明顯故爵,我們需要拷貝contrib和dist目錄到我們制定的目錄(不然依賴包找不到)玻粪。之前指定了solr_home為D:\develop\12-solr\solrhome隅津,我們將contrib和dist復(fù)制到D:\develop\12-solr\下,修改D:\develop\12-solr\solrhome\collection1\conf\solrconfig.xml

此時(shí)我們lib的dir需要修改前綴為${solr.install.dir:../..}

datadir標(biāo)簽

<dataDir>${solr.data.dir:}</dataDir> 是默認(rèn)的配置劲室,solr.data.dir:表示solrcore下伦仍。這里指定的是solrcore/data目錄,如果需要配置就指定目錄則在:后填寫路徑很洋,一般我們不修改充蓝。

requestHandler標(biāo)簽

requestHandler請(qǐng)求處理器,定義了索引和搜索的訪問(wèn)方式喉磁,例如name="/update" class="solr.UpdateRequestHandler" 其實(shí)與servlet在web.xml中定義handlerMapping一樣的谓苟。

多solrcore配置

配置多solrcore的好處。在進(jìn)行集群時(shí)协怒,必須配置多sorscore,每個(gè)sorscore之間是獨(dú)立的涝焙,都可以單獨(dú)的對(duì)外提供服務(wù),不同的業(yè)務(wù)模塊可以使用不同的sorscore來(lái)提供搜索和索引服務(wù)孕暇。

多solrcore就是將solrcore復(fù)制到solrhome下仑撞,并修改core.properties設(shè)置唯一的name。

Schema.xml

在solrcore下的conf目錄有schema.xml文件妖滔,主要配置了solrcore的一些數(shù)據(jù)信息隧哮,包括Field和FieldType的定義等信息。在solr中座舍,F(xiàn)ield和FieldType都需要先定義后使用沮翔。

Field

Field在solr中代表的意義就像是數(shù)據(jù)表里的字段。

<Field name="??" type="?" indexed="??" ?stored="??" required="??" multiValued="??" />

name:指定域名稱

Type:指定域的類型(type需要定義曲秉,使用fieldType聲明)

Indexed: 是否索引

Stored:是否存儲(chǔ)

Required:是否必須

multiValued:是否多值(例如商品中的圖片列表)

dynamicField 動(dòng)態(tài)域

<dynamicField name="" type="" indexed="" stored="" />

name:指定動(dòng)態(tài)域的命名規(guī)則采蚀,一般情況下name是匹配的例如:*_random,將匹配后綴為_random的field。

uniqueKey ?指定唯一鍵

<uniqueKey>id</uniqueKey>

其中Field的name為id的域岸浑,必須設(shè)置required=true,在一個(gè)schema.xml文件中有且僅有一個(gè)唯一鍵搏存。

copyField 復(fù)制域

就像管道一樣,從source復(fù)制到dest里

<copyField source="" dest="" />

source: 要復(fù)制的源域的域名

dest:目標(biāo)域的域名

dest所指定的目標(biāo)域矢洲,必須設(shè)置multiValued="true"

FieldType ?定義域類型

其中包含name,class,analyzer(分析器)璧眠,tokenizer(分詞器),F(xiàn)ilter(指定過(guò)濾器)

由于lucene支持英文和德語(yǔ)读虏,對(duì)于中文的拆分责静,我們需要使用第三方的jar包,ikanalyzer就是一個(gè)常用的中文分詞器盖桥≡煮Γ可以對(duì)一段中文進(jìn)行文字劃分。(ikanalyzer后續(xù)介紹)

中文分詞器ikanalyer配置

ref:?https://github.com/wks/ik-analyzer

IKAnalyzer是一個(gè)開源的揩徊,基于Java卡發(fā)的輕量級(jí)中文分詞工具包腰鬼,從06年12月推出1.0版本開始嵌赠,推出了3個(gè)大版本,最初它以Lucene為主體熄赡,集合詞典分詞和文法分析算法的中文分詞組件姜挺。新版本IKAnalyzer3.0則采用了特有的"正向迭代最細(xì)粒度切分算法",具有83萬(wàn)字/秒的高速處理彼硫。

針對(duì)Lucene全文搜索優(yōu)化的查詢分析器IKqueryParser 是值得推薦的炊豪,它引入了簡(jiǎn)單搜索表達(dá)式,采用歧義分析算法優(yōu)化查詢關(guān)鍵字的搜索排列組合拧篮,能極大提高Lucene檢索的命中率词渤。

IKAnalyzer作者林良益(linliangyi2007@gmail.com) 項(xiàng)目網(wǎng)站為http://code.google.com/p/ik-analyzer

maven工程的坐標(biāo)為

groupId:org.wltea.ik-analyzer

artifactId:ik-analyzer

version:3.2.8

下載ikanalyer? 個(gè)人選擇的IK Analyzer 2012FF_hf1.zip解壓后復(fù)制IkAanlyzer.cfg.xml,stopword.dic 到catalina_home/webapps\solr\WEB-INF\classes下。

復(fù)制IKAnalyzer2012FF_u1.jar到catalina_home\webapps\solr\WEB-INF\lib

配置FieldType 串绩,修改對(duì)應(yīng)的solrcore\conf 下的schema.xml

添加<fieldType name="text_ik" class="solr.TextField">

<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"></analyzer>

</fieldType>

在定義Field的時(shí)候就可以使用type="text_ik" 進(jìn)行中文分詞(假如定義了一個(gè)type="text_ik"的field名稱為content_ik)缺虐。重啟tomcat在solr的dashboard中,選擇solrcore赏参,展開Analysis 志笼,選擇Fieldname/FieldType 例如content_ik是type為text_ik的field。在Fileld Value(Index)里輸入中文文字把篓,然后再右側(cè)點(diǎn)擊Analyse Values就會(huì)返回輸入的中文的分詞結(jié)果。

DataImport 插件

在了解了solr相關(guān)的操作后腰涧,就開始應(yīng)用了韧掩,這里還存在一個(gè)問(wèn)題,數(shù)據(jù)庫(kù)中的數(shù)據(jù)如何映射到solr中窖铡,solr提供了dataimport插件疗锐。在我們下載的資源包路徑solr_4.10.3\dist下,拷貝solr-dataimporthandler-4.10.3.jar 到D:\develop\12-solr\contrib\dataimporthandler\lib 下(想想solrconfig.xml中的lib配置的路徑)费彼,contrib沒有dataimport需要我們手動(dòng)建立滑臊。然后拷貝數(shù)據(jù)庫(kù)(本地使用的mysql)的連接驅(qū)動(dòng)包mysql-connector-java-5.*.jar 到contrib\db\lib下(沒有文件夾就建立)。添加jar包后箍铲,需要讓solrcore引用jar包雇卷,進(jìn)入相關(guān)solrcore的conf目錄,修改solrconfig.xml 添加<lib dir="??" regex=".*\.jar" />(這里不做說(shuō)明,可參考其它的配置)

配置requestHandler

solrconfig.xml中颠猴,添加一個(gè)name="/dataimport"的requestHandler关划,可參考其它requestHandler

例如<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataimportHandler" >

<lst name="defaults"><str name="config">data-config.xml</str></lst>

</requestHandler>

上面的配置指定了dataimport的配置文件data-config.xml,位于solrconfig.xml同級(jí)目錄下翘瓮。

<?xml version="1.0" encoding="UTF-8" ?>

<dataConfig>

<dataSource type="JdbcDataSource"

driver="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/solr"

user="root"

password="root"/>

<document>

<entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products">

<field column="pid" name="id"/>

<field column="name" name="product_name"/>

<field column="catalog" name="product_catalog"/>

</entity>

</document>

</dataConfig>

重啟tomcat訪問(wèn)solr的dashboard在相關(guān)的solrcore中點(diǎn)擊Dataimport就可以查看到界面贮折,

執(zhí)行execute就可以將數(shù)據(jù)庫(kù)的數(shù)據(jù)按照data-config.xml的配置導(dǎo)入到solr中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末资盅,一起剝皮案震驚了整個(gè)濱河市调榄,隨后出現(xiàn)的幾起案子踊赠,更是在濱河造成了極大的恐慌,老刑警劉巖每庆,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筐带,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡扣孟,警方通過(guò)查閱死者的電腦和手機(jī)烫堤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凤价,“玉大人鸽斟,你說(shuō)我怎么就攤上這事±担” “怎么了富蓄?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)慢逾。 經(jīng)常有香客問(wèn)我立倍,道長(zhǎng),這世上最難降的妖魔是什么侣滩? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任口注,我火速辦了婚禮,結(jié)果婚禮上君珠,老公的妹妹穿的比我還像新娘寝志。我一直安慰自己,他們只是感情好策添,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布材部。 她就那樣靜靜地躺著,像睡著了一般唯竹。 火紅的嫁衣襯著肌膚如雪乐导。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天浸颓,我揣著相機(jī)與錄音物臂,去河邊找鬼。 笑死猾愿,一個(gè)胖子當(dāng)著我的面吹牛鹦聪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒂秘,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼泽本,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了姻僧?” 一聲冷哼從身側(cè)響起规丽,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蒲牧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赌莺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冰抢,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年艘狭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挎扰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巢音,死狀恐怖遵倦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情官撼,我是刑警寧澤梧躺,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站傲绣,受9級(jí)特大地震影響掠哥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秃诵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一续搀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菠净,春花似錦目代、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)在讶。三九已至煞抬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間构哺,已是汗流浹背革答。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留曙强,地道東北人残拐。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碟嘴,于是被迫代替她去往敵國(guó)和親溪食。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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