lucene 的下载和测试
以前 上过信息检索的课程 , 用的是教材 Modern Information Retrieval 的影印版 . 这本教材相当经典 , 讲述了许多非常经典的理论与方法 , 特别是老师独特的上课方式 , 以及老 师本身对于信息检索领域的热情 ( 用她自己的话说是 very enjoy), 这让我也对信息检索产 生了浓厚的兴趣 , 对信息检索的各种模型也都较熟悉 . 然而 , 虽然日常用到了各种搜索引擎 , 但是并没有触及过任何一个搜索引擎的内核 . 因此 , 之前对于信息检索的了解也顶多停留在一些经典模型的掌握和日常搜 索引擎的使用上 .
现 在跟老师做项目 , 要用到全 文检索的搜索引擎 , 这让我 有机会深入到搜索引擎的学习和研究中去 . 我们小组通过收集各种资料 , 进行比较 , 最后决定采用 apache( 发音 : 阿帕奇 , 就跟 apache 直升机的读音相同 ) 的开源 (open source) 项目 lucene( 发音 :/'lu:si:n/), 在此基础上 , 根据我们项目的需要以及团队在信息检索领域的核心技术 , 对 lucene 进行二次开发 . 因此 , 我们搜索引擎的研究也就是从 lucene 开始的 . 本文就上周对 lucene 的学习和使用中的一些主要问题进行阐述 , 作为资料共享 .
1 lucene2.0.0 的下载
lucene 已经成为 apache 的顶级开源项目 , 到目前为止 , 已经发展到 2.0.0 版本 , 这个版本在今年 5 月 26 才发表 . 据 lucene 自身的介绍和国内外一些用户的评论来看 ,2.0.0 版的性能在以前版本的基础上有了很大的提高 . 所以 , 在我们的项目中也使用了 2.0.0 版的 .
lucene 的下载建议到 apache 的官方主页下载 , 我用的是校园网 , 速度还不错 . 网址是 :http://apache.justdn.org/lucene/java/ . 我们使用的是 java 版的 , 当然也可以找到相应的 C++ 版本的 . 在下载时可以考虑下载两个文件 , 一是 lucene-2.0.0.zip , 这个是经过编译后的可以直接运行 DEMO 的版本 , 一是 lucene-2.0.0-src.zip , 这个是源代码文件 , 在运用时需要使用的就是文件里面的内容 . 下载页上的其他压缩文件可以不用下 , 因为国内一般不会用到这些东东 .
2 lucene2.0.0 的测试
下载 后 , 可以对 lucene 进行一些简单的测试 , 以了解其性能 . 但是由于 lucene 本身只是一个工具包 (Tool Kit), 并不能象其他系统一样通过双 击 .exe 就可以直接运行 . 需要编一个简单的接口 , 才能正常运行 . 不过在下载的 lucene 文件中 , 已经有一个 demo 文件 , 其中有一些简单的接口 , 可以通过控制台来运行 . 具体操作如下 :
2.1 Java 开发环境配置(需要安装 JDK, 并配置好 JDK 环境)
我使 用的是 jdk1.5.0_07 ,安装目录为: D:/java/jdk1.5.0_07.
2.2 Lucene 开发环境配置
先解 压下载的 lucene-2.0.0.zip ,可以看到 lucene-core-2.0.0.jar 和 lucene-demos-2.0.0.jar 这两个文件。将其解压到: d:/Java/lucene-2.0.0 。
然 后 , 将 lucene-core-2.0.0.jar 和 lucene-demos-2.0.0.jar 文件所在路径添加到 classpath( 类路径 ), 其设置跟配置 JDK 的 classpath 的方法一样。比如 , 在我所建的目录下 , 就需要将 d:/Java/lucene-2.0.0/lucene-core-2.0.0.jar 和 d:/Java/lucene-2.0.0/lucene-demos-2.0.0.jar 添加到环境变量的 classpath 中 .
2.3 Demo 测试
进入 控制台 , 先建立索 引 , 然后就可 以执行查询了 . 具体操作 如下 :
建立索引 :
> java org.apache.lucene.demo.IndexFiles d:/Java/lucene-2.0.0/src
该功能是对 C:/Java/lucene-1.9.1/src 下所有文件建立索引,同时,在当前命令行位置将生成 “index” 文件夹 ,"index" 文件夹用与存储文件索引的数据。
执行查询 :
> java org.apache.lucene.demo.SearchFiles
控制台将会出现 “Query:” 提示符,输入检索关键词,按回车键,便可得到查询结果。
注: 我在刚开始学习时 , 借用了 tag 的 lucene 学习笔记 , 其地址是 http://blog.csdn.net/qixiang_nj/archive/2006/04/27/679134.aspx
3 测试结果
经过 初步简单的测试 , 我们发现 DEMO 实现了一些简单的功能 , 如它能够执行对文本、 html 、 xml 、 word 、 pdf 文件的检索 , 并且支持中英文的检索。但进一步的测试发现,虽然它能够实现以上 功能,但其性能较差,因为它能很好的支持英文检索,而对中文的检索则并不那么顺利,这大概是因为其是 English Speaking country 开 发的缘故。比如,在对 word 文件的检索中,我们发现,如果是纯英文文档,它能够顺利的将其检索出来,而如果是纯中文或中英文混合的文档,则检索不到相关文献。
我 分析了一下,觉得其中主要有两个原因,一是 DEMO 本来只是用来测试的,所以其编得比较简单,自然其效率不高;二是 lucene 的 Analyzer 中文分析器效果不好。在我们项目的进展中,解决了这两个问题。
加点小知识,
我们使用lucene会创 建index索引文件。demo里面创建的地方在我们使用命令行的地方。
如果说还要使用 就得把以前的index文件删除。
这个是demo 还有一个web的demo
lucene本来就是在 存储的时候会建立一个索引文件,方便后面的搜索。