Lucene学习笔记(一)Lucene入门实例
学习Lucene有两周时间,现就这两周的学习做一个简单小结,写了一个入门级别的实例,如下面所示;
小结:
一、?Lucene是全文搜索引擎,注意是全文检索,但只检索文本。具体应用可以总结为一句话:先建立索引,再进行搜索;
二、从信息源拷贝到本地进行加工,称为索引库(信息集合),加工主要包括建立索引,具体是把文本中的关键字拆分出来建立索引;搜索时在本地索引库中搜索,具体是把搜索的字符串解析后再到索引库中匹配;
三、文本在建立索引和搜索时都会进行分词,并且要使用同一个分词器。
下面展示运行例子,先贴运行截图:
本例子是一个Web项目,需要运行在Servlet容器中,下载附件War包后部署好项目后,先访问后台http://localhost:8080/lucene/admin/index.jsp添加数据:

?如图,在D:\\lucene目录下游许多原始数据,主要包括一些文本文件,如Word,Excel,PPT,txt,HTML,XML等,这些文件中包括许多信息;
提交添加完成后访问主页面http://localhost:8080/lucene/?进行搜索

?
点击回车或搜索可以看到结果:

?可以看到包含关键字Kobe的文本有上图所示那么多,点击可以进行查看相应文档;
?
代码简要说明:
一、Lucene不能直接对Word,Excel,PPT,PDF等进行检索,检索时需要先抽取出Word,Excel,PPT,PDF包含的文本,抽取文本类为:File2StringUtils,如下所示:
?
二、创建索引部分代码:
private Document getDocument(File file) throws IOException {Document doc = new Document();doc.add(new Field( "path", file.getPath(), Field.Store.YES, Field.Index.NOT_ANALYZED ));doc.add(new Field( "modified", new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").format(file.lastModified()), Field.Store.YES, Field.Index.NOT_ANALYZED ));doc.add(new Field("contents", getTextualReader(file)));return doc;}private Reader getTextualReader(File file) throws IOException {if(file.getName().endsWith(".doc")) {return new StringReader(File2StringUtils.wordTranslation(file));} else if(file.getName().endsWith(".ppt")) {return new StringReader(File2StringUtils.powerPointTranslation(file));}else if(file.getName().endsWith(".xls")) {return new StringReader(File2StringUtils.excelTranlation(file));}else {return new FileReader(file);}}?
具体细节代码查看附件
?
完
?
?
?
?
?
?
?
?
1 楼 wang1352083 2012-08-30 感谢楼主,能把源文件发我一份吗?wang1352083@gmail.com这样就更容易入门lucene了.