1. 安装环境准备 ============== 1.1 安装Java JDK ---------------- 安装Java JDK 1.4或更新版本(SUN ![]() 关于如何在相应的操作系统上安装JDK,请参考相应文档。 设置环境变量: 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 项目的主页 https://javacc.dev./ 下载 JavaCC 2.1 版本 关于如何安装 JavaCC 2.1 请参考 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 ------------ 从 ![]() ![]() 设置环境变量 ANT_HOME=/usr/local/ant PATH=$ANT_HOME/bin:$PATH 1.4 安装Java应用服务器 --------------------- WebLucene 需要 Servlet 2.3 / JSP 1.2 兼容的Java应用服务器。 此版本在Tomcat 4.1.x和Resin 2.1.x上测试通过。 ![]() 设置环境变量: CATALINA_HOME=/usr/local/tomcat-4.1.24 Tomcat在standalone模式下,使用8080端口。 也可以将应用服务器和Web服务器绑定在一起使用,请参考相应的安装和环境变量设置 。 1.5 将WebLucene部署到成webapps ----------------------------- 只需将tar.gz包解压到Tomcat的webapps目录 2. Build项目 ============ 2.1 准备Build环境 ---------------- 将build.properties.default重命名成build.properties 在环境配置文件 build.properties 中设置一下环境变量: # 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根目录下运行 "ant build" 命令: % cd /usr/local/tomcat/webapps/weblucene/ % ant build 注意:如果build失败,请检查$CLASSPATH 环境变量,并确保重要的jar包都在相应路 径下。 如果成功Build, 下一步就是准备索引了。 从Sourceforge.net获得Weblucene的最新版本: 匿名导出: 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 操作起来要稍微麻烦一些,必须先通过ssh username@cvs.sourceforge.net, ssh username@cvs.sourceforge.net 把 CVS_RSH 设置为ssh, export CVS_RSH=ssh 然后才能够通过ext模式进行更新和提交,每次add、commit 操作都要输入一次密码: cvs -d:ext:username@cvs.sourceforge.net:/cvsroot/weblucene export -D now weblucene 3. 准备Index ============ weblucene中包含了一个简单的 xml 文档 /weblucene/doc/news_sample.xml 关于xml的结构请参考:/weblucene/doc/weblucene_index.dtd 你可以执行命令创建索引。 创建索引使用IndexRunner 命令:位于 /weblucene/WEB-INF/classes/IndexRunner.class), 参数格式: -i xml_url 输入XML的URL -o output_dir 输出索引的目录 注意: XML数据源将被索引到 $output_dir的 index 子目录下,如果对一个旧的索引进行更新 , 旧索引将被备份到$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! 说明索引创建成功 3. 运行搜索测试 ============== SearchRunner (位于 /weblucene/WEB-INF/classes/SearchRunner.class) 是一个命令 行的索引测试工具 格式: %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" 搜索结果将被打印到屏幕上: 4. 部署Web应用 ============= 以下是一个包含了认证设置的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> 请按照你导入的XML格式准备XSLT模板,并将文件存放成html.xsl 位于 $weblucene_home_directory/WEB-INF/var/appname/ 下 注意: 请将weblucene/webapp/WEB-INF/conf/目录下的log4j.conf.default重命名成 log4j.conf 另外,你需要为你的每个应用准备一个配置文件,如appname.conf (或appname.properties), 存放到weblucene/webapp/WEB-INF/conf/目录下,配置文件的内容请参考weblucene.con f. weblucene.conf 中定义了项目的缺省属性,当同名的属性出现在appname.conf 中时weblucene.conf 中的属性值将被覆盖. 启动WEB应用服务器: 使用 ![]() 方式产看结果输出。 如果发现:jdom NoClassDefFoundError: lang.NoClassDefFoundError: org/jdom/Document 请将weblucene/webapp/WEB-INF/lib下的jdom.jar复制到 /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 ========================== 你也可以将结果使用XSLT模板转换成HTML和RSS格式 结果输出中, 使用:outputFormat=HTML参数控制输出为HTML格式, 使用:outputFormat=RSS 参数控制输出为RSS 2.0格式 6. 查询结果的排序方式:DocID/Score 你可以指定查询结果的排序方式: 使用: orderStyle=DocID 结果将按数据加入索引库的先后顺序(倒序方式)排序, 使用: orderStyle=Score 结果将按其匹配度排序 7. 选择进行检索的索引 有可能你在一个索引库中放置了多项索引,每一项索引针对不同的检索内容, 如以下三项索引AuthorIndex,TitleIndex,AllIndex 分别是针对作者,标题以及 作者 + 标题 + 内容 + ...的索引,那么你可以 使用: index=AuthorIndex 仅对作者一项进行检索 使用: index=TitleIndex 仅对标题一项进行检索 使用: index=AllIndex 对更多内容进行检索 8. 完成的数据导入成XML格式的脚本样例:(PHP)和模板样例: ![]() dump/ 数据库(SQL SERVER)的PHP导出脚本和crontab脚本 blog_dump.php 从数据库导出BLOG文章到XML comments_dump.php 从数据库导出评论到XML blogchina.inc 数据库链接配置文件 dump.sh 每天的导出脚本 index.sh 创建索引脚本 webapp/var/ 相应应用程序的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 完成了,尝试使用自己的脚本将数据导入到XML格式中,并创建Lucene索引,祝你好运。 |
|