Sunday, December 2, 2007

关于lucene

最近想给自己某程序附加上文档的索引,想起有lucene这样东西。于是找到了下面的文章。

实战 Lucene,第 1 部分: 初识 Lucene
http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/

另外这里有篇介绍lucene工作原理的文章:
深入 Lucene 索引机制
http://www.ibm.com/developerworks/cn/java/wa-lucene/

写得非常浅显易懂并且带有示例的关于lucene的文档,IBM dw出品必属精品阿。
可惜似乎只有这篇了,找不到第2部分以及后续的文档。

>> 插入:Lucene简介

Lucene 简介

Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。

目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索。比如你要对一些 HTML 文档,PDF 文档进行索引的话你就首先需要把 HTML 文档和 PDF 文档转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引,然后把创建好的索引文件保存到磁盘或者内存中,最后根据用户输入的查询条件在索引文件上进行查询。不指定要索引的文档的格式也使 Lucene 能够几乎适用于所有的搜索应用程序。

>> 插入完

按照示例敲了一下,挺有感觉的,总结如下:
0.我的lucene是用yum直接安装的,装好后在/usr/share/java/lucene-1.4.3.jar中,其中会自动生成一个lucene.jar的符号链接在同目录中,因此必须把该包加入到CLASSPATH变量中。
1.OOP思想的好的贯彻。整个包(org.apache.lucene )的组织结构非常好,具体可以参考文章。
2.工作原理大致是:首先编写索引程序,用于建立索引;其次是建立查询程序,用于查询生成的索引。最后,执行索引程序生成索引,并用查询程序生成query并从建立好的索引数据库中取得数据。
3.默认的分词器很强大,可以识别出文本编码为UTF8还是GBK等(只在这两种中测试过),但是因为是用最基础的,预定义的分析器,因此似乎对于中文的分词没有处理(默认是一个中文字当作一个词)
4.想到的一般应用 (对于个人快速使用非常方便)
4.1.编写的静态website可以简单地使用lucene进行全文检索(当然要编写中文分词,下同)
4.2.小说内容搜索
4.3.源代码内容搜索(这个其实已经有更好的实现拉)


No comments: