怎么会是lucene?
欢迎订阅作者微博
在好朋友lhelper的帮助下,开始学习全文搜索引擎lucene了。从网上搜索了一些全文搜索的资料后发现这方面的产品很多,光是在http://www.searchtools.com 上你可以查到100多个搜索的工具(包括源代码)。如果你在百度上以“全文搜索”为关键字 搜索的话,会发现除了理论上的介绍以外,大部分的实例都是来自lucene。为什么只有lucene这么广为接受呢?
这种感觉对我来讲,就好比keso张大嘴巴说:怎么会是新浪?。
我想一个产品的普及有技术上的先进是必要条件,产品推广是充分条件。
而这两条lucene都具备了。
首先Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家。这样的大腕开发出来的产品自然让大家心服口服。可我认为这还不是lucene如此广受欢迎的主要原因。我认为主要原因是:
1、 Lucene不是一个完整的全文索引应用,而是是一个用JAVA写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。这样的定位,使得lucene有很高的抽象层次,便于扩展和整合到已有的系统。因为对于大多数的全文搜索应用来说,我们需要的是一个开发工具包而不是最终产品(虽然很多搜索引擎也可以扩展特性功能)。这也是程序员最愿意接受的封装层次。
2、 Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构/接口中。(上面语句有些来自 在应用中加入全文检索功能——基于JAVA的全文索引引擎Lucene简介)。
第二条关于Lucne 的推广。 Lucene在国内如此普及,我想车东的一系列搜索相关的文章介绍起了很大的推动作用。正如竹笋炒肉说的:不仅仅在推广和介绍方面,车东在Lucene的汉化及web应用,也作出了极大的极大的贡献。
尽管有一些介绍其他搜索引擎的文章,但是影响要小多了。
在阅读了国内关于lucene的很多文章后,我发现大部分的介绍都和车东的文章雷同(文字出入很大,估计不是抄袭,呵呵),但都是介绍如何迅速构建一个lucene式的服务,大部分属于hello world级别的。
在车东的文章中提到中文索引文件所占的空间和原文几乎一样大!这一点可让人无法接受,即使英文资料索引所占空间也达到了原文的30%到50%。如此发展下去google、百度们一定是海量硬盘消费的最大客户了。很显然对索引文件的优化是搜索引擎一个重要的部分。
另外如果要想让lucene成为分布式的搜索引擎,也要从索引文件下手,要么扩展索引文件成为分布式文件系统,要么把索引文件放到数据库中,利用数据库的分布式性能提供分布式搜索服务。
既然如此,我就有了分析lucene索引文件格式的想法。
我会在以后的文章中重点分析lucene索引的文件格式。
lucene目前已经提供了lucene索引文件格式的标准文档,很多人基于此开发出了多种语言版本的lucene. ref: http://java2.5341.com/1_98.html
一个针对DAo的演示例子
基于JAVA技术的搜索引擎的研究与实现
http://udoo.51.net/mt/archives/000089.html
http://www.theserverside.com/news/thread.tss?thread_id=23043
http://www.tbray.org/ongoing/When/200x/2003/07/30/OnSearchTOC
Lots Of Interest in Lucene Desktop
http://www.getopt.org/luke/
田春峰
2004-12-23