1. 安裝環(huán)境準(zhǔn)備 ============== 1.1 安裝Java JDK ---------------- 安裝Java JDK 1.4或更新版本(SUN ![]() 關(guān)于如何在相應(yīng)的操作系統(tǒng)上安裝JDK,請(qǐng)參考相應(yīng)文檔。 設(shè)置環(huán)境變量: JAVA_HOME=/usr/java/j2sdk1.4.1 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar 1.2 安裝 JavaCC 2.1 ------------------- 從 JavaCC 項(xiàng)目的主頁(yè) https://javacc.dev./ 下載 JavaCC 2.1 版本 關(guān)于如何安裝 JavaCC 2.1 請(qǐng)參考 see https://javacc.dev./doc/installhelp.html 如何找到舊版本的JavaCC https://javacc.dev./files/documents/17/711/JavaCC2_1.class 命令行模式的安裝: java -cp ./ JavaCC2_1 -c 1.3 安裝 Ant ------------ 從 ![]() ![]() 設(shè)置環(huán)境變量 ANT_HOME=/usr/local/ant PATH=$ANT_HOME/bin:$PATH 1.4 安裝Java應(yīng)用服務(wù)器 --------------------- WebLucene 需要 Servlet 2.3 / JSP 1.2 兼容的Java應(yīng)用服務(wù)器。 此版本在Tomcat 4.1.x和Resin 2.1.x上測(cè)試通過(guò)。 ![]() 設(shè)置環(huán)境變量: CATALINA_HOME=/usr/local/tomcat-4.1.24 Tomcat在standalone模式下,使用8080端口。 也可以將應(yīng)用服務(wù)器和Web服務(wù)器綁定在一起使用,請(qǐng)參考相應(yīng)的安裝和環(huán)境變量設(shè)置 。 1.5 將WebLucene部署到成webapps ----------------------------- 只需將tar.gz包解壓到Tomcat的webapps目錄 2. Build項(xiàng)目 ============ 2.1 準(zhǔn)備Build環(huán)境 ---------------- 將build.properties.default重命名成build.properties 在環(huán)境配置文件 build.properties 中設(shè)置一下環(huán)境變量: # if the serverlet.jar (or called j2sdk23.jar is not in your classpath), set jsdk_jar jsdk_jar=/usr/local/tomcat/common/lib/servlet.jar # For windows: # jsdk_jar=d:\\usr\\local\\tomcat\\common\\lib\\servlet.jar javacc.home = /usr/java/javacc/bin # javacc.home = d:\\usr\\local\\javacc2_1\\javacc2.1\\bin javacc.zip.dir = ${javacc.home}/lib javacc.zip = ${javacc.zip.dir}/JavaCC.zip 2.2 Build --------- 在weblucene根目錄下運(yùn)行 "ant build" 命令: % cd /usr/local/tomcat/webapps/weblucene/ % ant build 注意:如果build失敗,請(qǐng)檢查$CLASSPATH 環(huán)境變量,并確保重要的jar包都在相應(yīng)路 徑下。 如果成功Build, 下一步就是準(zhǔn)備索引了。 從Sourceforge.net獲得Weblucene的最新版本: 匿名導(dǎo)出: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/weblucene login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/weblucene co weblucene sourceforge.net 的cvs 操作起來(lái)要稍微麻煩一些,必須先通過(guò)ssh username@cvs.sourceforge.net, ssh username@cvs.sourceforge.net 把 CVS_RSH 設(shè)置為ssh, export CVS_RSH=ssh 然后才能夠通過(guò)ext模式進(jìn)行更新和提交,每次add、commit 操作都要輸入一次密碼: cvs -d:ext:username@cvs.sourceforge.net:/cvsroot/weblucene export -D now weblucene 3. 準(zhǔn)備Index ============ weblucene中包含了一個(gè)簡(jiǎn)單的 xml 文檔 /weblucene/doc/news_sample.xml 關(guān)于xml的結(jié)構(gòu)請(qǐng)參考:/weblucene/doc/weblucene_index.dtd 你可以執(zhí)行命令創(chuàng)建索引。 創(chuàng)建索引使用IndexRunner 命令:位于 /weblucene/WEB-INF/classes/IndexRunner.class), 參數(shù)格式: -i xml_url 輸入XML的URL -o output_dir 輸出索引的目錄 注意: XML數(shù)據(jù)源將被索引到 $output_dir的 index 子目錄下,如果對(duì)一個(gè)舊的索引進(jìn)行更新 , 舊索引將被備份到$output_dir 的 work 子目錄下, 例子: % cd /usr/local/tomcat/webapps/weblucen/WEB-INF/classes/ % export LIB=/usr/local/tomcat/webapps/weblucen/WEB-INF/lib % java -classpath /usr/local/tomcat/webapps/weblucen/WEB-INF/classes:$LIB/lucene.jar: $LIB/xercesImpl.jar:$LIB/log4j.jar:$LIB/java-getopt.jar 格式: IndexRunner -i /usr/local/tomcat/webapps/weblucene/dump/blog.xml \ -o /usr/local/tomcat/webapps/weblucene/webapp/WEB-INF/var/blog 例如: java IndexRunner -i /home/weblucene/dump/blog.xml -o /home/weblucene/webapp/WEB-INF/var/blog 如果顯示: Congratulations! You‘ve indexed the source xml successfully! 說(shuō)明索引創(chuàng)建成功 3. 運(yùn)行搜索測(cè)試 ============== SearchRunner (位于 /weblucene/WEB-INF/classes/SearchRunner.class) 是一個(gè)命令 行的索引測(cè)試工具 格式: %java SearchRunner -i $weblucene_home_directory/WEB-INF/var/$dir_name/index \ -f IndexName -k "query keywords" 例如: %java SearchRunner -i /home/weblucene/webapp/WEB-INF/var/blog/index -f "FullIndex" -k "2002" 搜索結(jié)果將被打印到屏幕上: 4. 部署Web應(yīng)用 ============= 以下是一個(gè)包含了認(rèn)證設(shè)置的resin配置: <web-app id=‘/weblucene‘ app-dir=‘/home/weblucene/webapp‘ class-update-interval=‘120‘> <login-config auth-method=‘basic‘> <authenticator> <class-name>com.caucho.http.security.XmlAuthenticator</class-name> <init-param user=‘username:password:rolename‘/> </authenticator> </login-config> <security-constraint url-pattern=‘/admin‘ role-name=‘rolename‘/> </web-app> 請(qǐng)按照你導(dǎo)入的XML格式準(zhǔn)備XSLT模板,并將文件存放成html.xsl 位于 $weblucene_home_directory/WEB-INF/var/appname/ 下 注意: 請(qǐng)將weblucene/webapp/WEB-INF/conf/目錄下的log4j.conf.default重命名成 log4j.conf 另外,你需要為你的每個(gè)應(yīng)用準(zhǔn)備一個(gè)配置文件,如appname.conf (或appname.properties), 存放到weblucene/webapp/WEB-INF/conf/目錄下,配置文件的內(nèi)容請(qǐng)參考weblucene.con f. weblucene.conf 中定義了項(xiàng)目的缺省屬性,當(dāng)同名的屬性出現(xiàn)在appname.conf 中時(shí)weblucene.conf 中的屬性值將被覆蓋. 啟動(dòng)WEB應(yīng)用服務(wù)器: 使用 ![]() 方式產(chǎn)看結(jié)果輸出。 如果發(fā)現(xiàn):jdom NoClassDefFoundError: lang.NoClassDefFoundError: org/jdom/Document 請(qǐng)將weblucene/webapp/WEB-INF/lib下的jdom.jar復(fù)制到 /home/resin/lib/ 下 :-P webluene 的XML輸出格式為: <?xml version="1.0" encoding="GBK"?> <WebLuceneResultProtocol ver="1.0"> <Query>query</Query> <Encoding>GBK</Encoding> <UriEncodedQuery>query</UriEncodedQuery> <Start>0</Start> <Pagesize>10</Pagesize> <OutputFormat>xml</OutputFormat> <DirName>app</DirName> <IndexName>FullIndex</IndexName> <OrderStyle>Date</OrderStyle> <TimeUsed>4.0</TimeUsed> <ShowFields>Title,Author,Content,PubTime</ShowFields> <HighlightFields>Title,Author,Content</HighlightFields> <Total>7015</Total> <TotalResultLimit>1000</TotalResultLimit> <RecordSet> <Record score="0.99999994" id="313619"> <Id>2120</Id> <Title>foo</Title> <Author/> <Content>blah blah</Content> <PubTime>2000-06-13 00:00:00</PubTime> </Record> </RecordSet> <WebLuceneResultProtocol> 5. 輸出成其他格式:HTML/RSS ========================== 你也可以將結(jié)果使用XSLT模板轉(zhuǎn)換成HTML和RSS格式 結(jié)果輸出中, 使用:outputFormat=HTML參數(shù)控制輸出為HTML格式, 使用:outputFormat=RSS 參數(shù)控制輸出為RSS 2.0格式 6. 查詢結(jié)果的排序方式:DocID/Score 你可以指定查詢結(jié)果的排序方式: 使用: orderStyle=DocID 結(jié)果將按數(shù)據(jù)加入索引庫(kù)的先后順序(倒序方式)排序, 使用: orderStyle=Score 結(jié)果將按其匹配度排序 7. 選擇進(jìn)行檢索的索引 有可能你在一個(gè)索引庫(kù)中放置了多項(xiàng)索引,每一項(xiàng)索引針對(duì)不同的檢索內(nèi)容, 如以下三項(xiàng)索引AuthorIndex,TitleIndex,AllIndex 分別是針對(duì)作者,標(biāo)題以及 作者 + 標(biāo)題 + 內(nèi)容 + ...的索引,那么你可以 使用: index=AuthorIndex 僅對(duì)作者一項(xiàng)進(jìn)行檢索 使用: index=TitleIndex 僅對(duì)標(biāo)題一項(xiàng)進(jìn)行檢索 使用: index=AllIndex 對(duì)更多內(nèi)容進(jìn)行檢索 8. 完成的數(shù)據(jù)導(dǎo)入成XML格式的腳本樣例:(PHP)和模板樣例: ![]() dump/ 數(shù)據(jù)庫(kù)(SQL SERVER)的PHP導(dǎo)出腳本和crontab腳本 blog_dump.php 從數(shù)據(jù)庫(kù)導(dǎo)出BLOG文章到XML comments_dump.php 從數(shù)據(jù)庫(kù)導(dǎo)出評(píng)論到XML blogchina.inc 數(shù)據(jù)庫(kù)鏈接配置文件 dump.sh 每天的導(dǎo)出腳本 index.sh 創(chuàng)建索引腳本 webapp/var/ 相應(yīng)應(yīng)用程序的XSLT模板 9. 樣例索引腳本: index.sh ================================ #!/bin/sh # $Id: BUILD.txt,v 1.7 2004/11/21 01:56:37 chedong Exp $ # # dump and rebuild blogchina index in crontab # 2 2 * * * (cd /home/weblucene/dump/; ./dump.sh > dump.log; ./index.sh > index.log) # java export JAVA_HOME=/usr/java/jdk export ANT_HOME=/usr/java/ant # path export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH export LIB=/home/weblucene/webapp/WEB-INF/lib export CLASSPATH=$LIB/../classes:$LIB/lucene.jar:$LIB/xercesImpl.jar:$LIB/log4j.jar :$LIB/java-getopt.jar export WEBLUCENE=../webapp/WEB-INF/var # rebuild index ARGS="-Xms64m -Xmx256m" java $ARGS IndexRunner -i blog.xml -o $WEBLUCENE/blog java $ARGS IndexRunner -i comments.xml -o $WEBLUCENE/comments 完成了,嘗試使用自己的腳本將數(shù)據(jù)導(dǎo)入到XML格式中,并創(chuàng)建Lucene索引,祝你好運(yùn)。 |
|