screen.width*.65)this.width=screen.width*.65" border=0 name=pic_4265>
作者:lotus
看完Lucene-1.3-final已经有一段时间了,一直没有时间总结一下,上一篇《Lucene-1.3-final已完全支持中文的切词与检索了》只是让你明白lucene-1.3-final可以不经过任何扩充和修改就可以支持中文的检索了,既然lucene-1.3-final在application上支持中文的全文检索,那么那也一定在web上支持全文检索。下面就简单介绍一下不修改lucene-1.3-final任何东西在web上建立全文检索应用。
一、?建立运行环境
1、系统环境
本人运行环境:
windows 2000 professional
resin2.1.6(为什么要用resin,下面有描述)
lucene-1.3-final其中的两个包lucene-1.3-final.jar、lucene-demos-1.3-final.jar、以及luceneweb.war用于web上的应用。
2、建立应用环境
将luceneweb.war拷贝到resin目录下的webapps目录中,启动resin,则luceneweb.war会自动解开成一个目录luceneweb,这时删除luceneweb.war这个文件。
将lucene-1.3-final.jar、lucene-demos-1.3-final.jar两文件拷贝到刚生成的luceneweb目录中的WEB-INF下的lib目录中。
OK,lucene-1.3-final的应用环境已建立起来了。
二、?配置
1、建立索引文件
假如你要全文检索的文件在D:/resin-2.1.6/webapps/index中,如在其中拷贝多个中文文件,其中也允许包含许多目录。
注意:要检索的文件只能是htm/html/txt格式的文件,要检索其它格式的文件如word/pdf等格式的文件,就要对lucene进行扩展,这不在本文讲述的范围内。
如果你要将对D:/resin-2.1.6/webapps/index目录中的文件建立索引文件,并将它
放入D:/resin-2.1.6/webapps/luceneindex目录中,则在cmd工作模块下,执行如下命令:
d:>cd? resin-2.1.6/webapps/luceneindex
D:/resin-2.1.6/webapps/luceneindex>java org.apache.lucene.demo.IndexHTML -create -index D:/resin-2.1.6/webapps/luceneindex ../index
(注意:你要将lucene-1.3-final.jar、lucene-demos-1.3-final.jar加入到系统的classpath中。)
则就会将D:/resin-2.1.6/webapps/index中的文件包括其中所有目录下的文件建立索引,并将索引文件存在D:/resin-2.1.6/webapps/luceneindex目录中了。
索引文件形如:
_6.f1
_6.f2
_6.f3
_6.f4
……
2、在web应用中配置索引文件目录
在luceneweb目录中找到一个jsp文件configuration.jsp,打开编辑,将其中的第5行改为如下形式:
String indexLocation = "D://resin-2.1.6//webapps//luceneindex";你自行修改成你自己的索引文件目录。
3、一点修改
在luceneweb目录中找到一个jsp文件result.jsp,打开编辑,将其中的第68行
?Analyzer analyzer = new StopAnalyzer();?????????????? //construct our usual analyzer
修改成如下:
Analyzer analyzer = new StandardAnalyzer();
注意:因为使用到StandardAnalyzer类,所以要先此类引入此jsp文件中。
如果不修改这一句只能检索到英文内容,修改后就完全可以检索中文了。
另:将<%@ page language="java" contentType="text/html;charset=GBK"%>添加到result.jsp的第一行,以正确显示中文结果。
好了,大功告成,可以运行了。
三、?运行结果
重新启动resin,在浏览器地址输入:http://localhost/luceneweb/index.jsp
出现如图界面,输入要检索的关键字,如:语法检查,点search按钮。
结果就出来了,如图所示,可以看出结果有两个,一个是html文件,一个是txt文件。
?
四、?后记
1、?上面对result.jsp文件进行的一点修改我觉得其实可以很容易理解,因为切词用的就是StandardAnalyzer,所以检索时也应该用这个,然后才能正确检索结果。
2、?我选resin作测试的目的就因为它的request的编码方式为GBK,所以不需对输入的关键字进行编码转换。如果使用tomcat作为webserver,则取得检索关键字时应对其进行编码转换,将iso-8859-1转为GBK,如何转换就不必我多讲了。
3、?可以看出没有对lucene-1.3-final进行任何修改,就可以在WEB上进行中文的全文检索了,就说爽不爽!:)只要对本demo稍加修饰,就可以将其应用到实际应用中。
4、在实际应用中,可以建立定时任务,对系统中的某个目录中的所有文件定时建立索引,也可以使用线程,在web应用中每延时一段时间就建立索引一次,这样就可以对系统中的新内容进行全文检索了。
5、?本例只能对html、htm、txt文件进行检索,要检索其它文件,如pdf、word、excel、xml其实也不难,lucene-1.3-final本身支持所有文档,关键看你怎么将这些文件传给它,如何做,请参阅其它资料。