清人顏元曾說過:“學(xué)而必習(xí),習(xí)又必行,固也”。若干年來,本人一直對這句話奉若神明,深感只有致用才能鞏固學(xué)的效果,發(fā)現(xiàn)學(xué)的不足,享受學(xué)的樂趣。
搜索引擎在近幾年的發(fā)展雖沒有大的突破,卻逐步走向成熟,走向商業(yè)。同時(shí),隨著開源的搜索引擎逐漸增多,門檻也逐步降低,使得普通程序員也能有機(jī)會(huì)接觸到這一高深的領(lǐng)域。由于對搜索引擎的興趣所致,筆者也利用部分業(yè)余時(shí)間對此進(jìn)行一些研究與嘗試。本文及后續(xù)的文章主要記載筆者在實(shí)踐中的一些操作過程及應(yīng)用體會(huì),同時(shí)參考了一些前人的文章,目的主要是為了備忘,也希望能對后來者有所參考與助益。
目前較為有名的開源搜索引擎Nutch、Compass、Solr等都是基于Lucene之上,而在眾多基于Lucene的檢索系統(tǒng)中,車東先生的WebLucene可以說是國人在此領(lǐng)域非常有影響力的作品,那就首先從WebLucene的安裝開始說起吧!
?
1、安裝系統(tǒng)環(huán)境
(1)安裝Java JDK
安裝Java JDK 1.4或更新的版本,同時(shí)設(shè)置好環(huán)境變量。這應(yīng)該是這篇文章讀者電腦里的基本設(shè)置,所以不再詳述。
(2)安裝JavaCC 2.1
解壓JavaCC2_1.zip文件后,打開DOS命令提示符窗口,來到剛解壓生成的目錄,輸入如下命令來安裝JavaCC(如圖1所示):
?????? java -cp ./ JavaCC2_1 -c
??????????????????????? (圖1)
?
在接受協(xié)議之后,選擇要安裝的目錄路徑,回車后就進(jìn)行自動(dòng)的安裝操作了,等看到如圖
2所示的提示表示已安裝成功。
?????????? (圖2)
?
(3)安裝Ant
在DOS命令提示符窗口輸入ant,如果出現(xiàn)如圖3所示的提示,則表明已安裝成功。
?????????????? (圖3)
?
(4)部署WebLucene工程
本文使用的應(yīng)用服務(wù)器為resin-3.0.17,將下載來的WebLucene壓縮包解壓到resin-3.0.17目錄下的webapps目錄中。
?
2、Build項(xiàng)目
(1)準(zhǔn)備Build環(huán)境
首先將weblucene目錄下的文件build.properties.default重命名為build.properties,打開此文件,將內(nèi)容修改為如下的形式,讀者可依據(jù)自己的實(shí)際目錄來做相應(yīng)調(diào)整:
# ---------------------------------------------------------
# WebLucene?BUILD?PROPERTIES
# ---------------------------------------------------------
jsdk_jar=E:\\resin-3.0.17\\lib\\jsdk-24.jar
javacc.home=D:\\opensource\\JavaCC2_1\\javacc2.1\\bin
javacc.zip.dir=D:\\opensource\\JavaCC2_1\\javacc2.1\\bin\\lib
javacc.zip=D:\\opensource\\JavaCC2_1\\javacc2.1\\bin\\lib\\JavaCC.zip
(2)Build工程
在DOS命令提示符窗口中將當(dāng)前路徑調(diào)整到weblucene目錄,輸入“ant build”命令,如出現(xiàn)圖4所示的提示,則表示已Build成功。如果build失敗,請檢查CLASSPATH中的環(huán)境變量以及build.properties文件中的相應(yīng)配置是否正確。
???????????????????????????? (圖4)
?
3、創(chuàng)建索引
創(chuàng)建索引使用IndexRunner命令,位于/weblucene/WEB-INF/classes/IndexRunner.class,其參數(shù)格式為:
-i xml_url?????? 輸入XML的URL
-o output_dir??? 輸出索引的目錄
在dump目錄中有一blog.xml文件,我們可以對其進(jìn)行創(chuàng)建索引的測試。當(dāng)然讀者也可以使用自己準(zhǔn)備的素材來進(jìn)行創(chuàng)建索引的測試,在后續(xù)文章中筆者將會(huì)對其作進(jìn)一步的討論。
在DOS命令提示符窗口中進(jìn)行如圖5所示的操作,見到如下提示則表示創(chuàng)建索引成功:
50 rows added Total time Use:0 second
750 [main] INFO IndexRunner - Great! Indexing OK
?
???????????????????????????? (圖5)
?
?
4、搜索測試
搜索使用SearchRunner 命令,位于 /weblucene/WEB-INF/classes/SearchRunner.class,其參數(shù)格式為:
-i ?索引所在的目錄
-f ?索引的字段名
-k ?查詢的關(guān)鍵字
在DOS命令提示符窗口中進(jìn)行如圖6所示的操作,可以看到搜索結(jié)果被打印到屏幕上:
???????????????????????????????? (圖6)
?
從上面的圖中可以看出WebLucene采用了二元分詞,在后續(xù)的文章中筆者將會(huì)對分詞作進(jìn)一步的討論。
?
5、部署Web應(yīng)用
(1)在resin.conf文件里加上如下的配置,讀者可依據(jù)自己的實(shí)際目錄來做相應(yīng)調(diào)整:
<host id="" root-directory=".">
<web-appid='/weblucene' ?document-directory="E:\resin-3.0.17\webapps\weblucene\webapp"/>
</host>
(2)將weblucene/webapp/WEB-INF/conf/目錄下的log4j.conf.default重命名成 log4j.conf,并將文件中的log4j.appender.A1.File設(shè)置成為E:\\resin-3.0.17\\webapps\\weblucene\\webapp\\WEB-INF\\logs\\weblucene.log,請讀者依據(jù)自己的實(shí)際目錄來做調(diào)整。
?????????????????????????????? (圖7)
?
在搜索框中輸入關(guān)鍵字“路線圖”,點(diǎn)擊查詢后會(huì)出現(xiàn)如圖8所示的頁面:
?
?????????????????????????????? (圖8)
?
好了,關(guān)于
WebLucene
的安裝就告一段落,在后續(xù)文章中筆者將來講述如何實(shí)現(xiàn)基于
WebLucene
的應(yīng)用。?