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

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

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

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

mysql 5.x

tomcat7

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




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

安裝

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

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

tomcat的目錄為d:\dev\tomcat\tomcat7-solr ?以下簡稱catalina_home

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

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

? 從solr下載的目錄solr_4.10.3\example\webapps 下solr.war到catalina_home\webapps目錄。在tomcat目錄下catalina_home\bin下點擊startup.bat 啟動容器。此時solr.war會被解壓出來,將webapps下的solr.war刪除,保留解壓后的solr文件夾。

2 添加擴展服務(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ù)運行的主目錄,一個solrhome包含多個 solrcore,一個solrcore目錄里有一個solr實例運行和配置的文件和數(shù)據(jù),每個solrcore都可以獨立對外提供搜索和索引服務(wù)。多個solrcore是相互獨立的。在下載的資源文件中solr_4.10.3\example\solr(就是solrhome)下包含一個文件夾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目錄下有個solrconfig.xml的配置文件。在該文件里主要配置lib,datadir,requestHandler(如果不配置,使用的是默認(rèn)的配置)

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

solrconfig.xml

solrcore下config里有一個文件solrconfig.xml用來配置solrcore的運行信息。核心包含lib,datadir,requestHandler

lib標(biāo)簽

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

例如其中的一個配置(這是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)文件上一級。${solr.install.dir:../../..}其實就到了solr_4.10.3目錄,這個目錄里有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

此時我們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請求處理器,定義了索引和搜索的訪問方式,例如name="/update" class="solr.UpdateRequestHandler" 其實與servlet在web.xml中定義handlerMapping一樣的。

多solrcore配置

配置多solrcore的好處。在進行集群時,必須配置多sorscore,每個sorscore之間是獨立的,都可以單獨的對外提供服務(wù),不同的業(yè)務(wù)模塊可以使用不同的sorscore來提供搜索和索引服務(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:是否存儲

Required:是否必須

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

dynamicField 動態(tài)域

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

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

uniqueKey ?指定唯一鍵

<uniqueKey>id</uniqueKey>

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

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(指定過濾器)

由于lucene支持英文和德語,對于中文的拆分,我們需要使用第三方的jar包,ikanalyzer就是一個常用的中文分詞器??梢詫σ欢沃形倪M行文字劃分。(ikanalyzer后續(xù)介紹)

中文分詞器ikanalyer配置

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

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

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

IKAnalyzer作者林良益(linliangyi2007@gmail.com) 項目網(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? 個人選擇的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 ,修改對應(yīng)的solrcore\conf 下的schema.xml

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

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

</fieldType>

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

DataImport 插件

在了解了solr相關(guān)的操作后,就開始應(yīng)用了,這里還存在一個問題,數(shù)據(jù)庫中的數(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需要我們手動建立。然后拷貝數(shù)據(jù)庫(本地使用的mysql)的連接驅(qū)動包mysql-connector-java-5.*.jar 到contrib\db\lib下(沒有文件夾就建立)。添加jar包后,需要讓solrcore引用jar包,進入相關(guān)solrcore的conf目錄,修改solrconfig.xml 添加<lib dir="??" regex=".*\.jar" />(這里不做說明,可參考其它的配置)

配置requestHandler

solrconfig.xml中,添加一個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同級目錄下。

<?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訪問solr的dashboard在相關(guān)的solrcore中點擊Dataimport就可以查看到界面,

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容