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下开发比较少,所以系统结构不是很严谨,代码编写也不太规范,希望各位大虾能指出。
多聚旅游 聚游宝 学友网