由于自己的毕业设计要对html文件建索引,所以参考了 lucene2.4.0的demo,由于现在网上对这个demo的搭建都是较早版本,所以有很多的问题,现在把我的步骤阐述一下:
step1:首先需要准备好lucene-core-2.4.0.jar和IKAnalyzer2.0.2OBF.jar(不要使用IKAnalyzer1.4版本,它不怎么支持lucene-core-2.4.0.jar).
step2:在elipse里面建立一个java工程,把demo的原代码拷贝过来.
step3:把这个demo代码中的全部StandardAnalyzer修改为IK_CIKAnalyzer,此时你去调试demo会出现类似一下错误:
Parse Aborted: Lexical error at line 63, column 16. Encountered: "\u987b" (39035), after : ""
step4:解决上面的问题需要:
第一:先下载一个javacc
第二:修改HtmlParser.jj文件的
options { IGNORE_CASE = true; STATIC = false;} 为:
options { IGNORE_CASE = true; STATIC = false;UNICODE_INPUT=true;}
第三:运行javacc HtmlParser.jj
第四:把产生出来的7个java文件覆盖原先的java源文件
此时去建立索引试没有问题了,
但是如果要使用luceneweb来搜索还要修改jsp编码问题
step5:把luceneweb下面的5个jsp文件都加上
<%@ page contentType="text/html; charset=GBK" %>
step6:还需要修改results.jsp
把62行的
queryString = request.getParameter("query");
改为
queryString = new String( request.getParameter("query").getBytes("ISO8859-1"),"GBK");
并且把这个results.jsp里面的SdandardAnalyzer也要改为IK_CAnalyzer,并且不要忘记在results.jsp头部把IK_CAnalyzer导入
step7:如果还不行,需要修改一下你的tomcat(我的是6.0.10版本)的配置文件server.xml
:把46行附近的代码改为:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
OK了