Lucene+IKAnalyzer搭建全文检索引擎

一直都在.Net下做开发,偶尔也写写C和C++的小程序。当然,Java也写过,不过比较少。一个学期没去上JSP的课,突然收到没交作业就挂科的消息,没办法,做作业吧。既然要做作业,那就要做点特别的,不要总是什么学生管理系统这些增删改查的老掉牙的。。。

上次比赛需要在.Net平台下用Lucene.Net搭建过全文检索引擎,所以这次想尝试下用java开发试试,虽然很少弄过java,但语言就一工具,看看说明应该就能简单应用了。下了《Lucene in action》这本书,英文版的(找不到中文完整版的),初略的浏览了一遍,掌握个大概,就开始开发了。

项目要实现的目标:实现局域网内文档共享;

项目的功能说明:上传文档到服务器,服务器为文档添加索引,以实现全文检索;

项目开发过程:

首先,新建一个Web Project(只是一个Home Work,所以没有使用SSH),项目结果如下图:

 

接着,先下载开发所需的jar包,并在项目中引进:

 

改项目使用的是IKAnalyzer这个分词组件,它使用方便,而且分词准确性高,下载地址:

IKAnalyzer提供Lucene的API如下图:

IKAnalyzer的部署也很简单,如下图:

为项目添加Lucene的功能支持,即引入Lucene相关的jar包。

新建文章类Article:

新建简单的索引,搜索类LuceneSearchSimple:

1.为了对文档内容进行索引,我们要先对文档进行解析,分离出文档的内容,所以,我们要引入tm-extractors-0.4包:

2.编写解析文档内容的方法。

3.编写索引的方法:

4.编写分词的方法:

5.编写搜索,并高亮显示的方法(改方法比较长):

6.编写删除索引的方法:

7.因为Lucene没有更新索引的方法,所以,更新索引要先删除,再重新添加。

8.新建,编写文件上传的页面,在文件上传后对文件标题,关键字,作者,及文档内容进行索引:

9.新建,编写搜索页面~~

通过超链接来调用搜索的方法:

knowledag.jsp得到参数,调用搜索的方法(该项目页面比较少,所以没用拦截器,只用最原始的页面转码):

把结果在页面中显示出来便OK了,如下图:

 

因为在Java下开发比较少,所以系统结构不是很严谨,代码编写也不太规范,希望各位大虾能指出。

posted @ 2011-08-07 22:13  三度空间  阅读(2980)  评论(2编辑  收藏  举报