使用Lucene-1.3-final在web上建立全文检索应用

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本身支持所有文档,关键看你怎么将这些文件传给它,如何做,请参阅其它资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值