说了这么多,那么我们为嘛要使用Lucene来做搜索呢?
现在做搜索应该有好几个框架可以使用,比如,google使用的是BigTable作为底层索引存储。baidu也应该有自己的框架,yahoo也有。但是为嘛我们要用Lucene呢?
接下来谈谈lucene的优缺点。
(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。
(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。
上面那段话是看其他资料得的。原因其实很简单,就是它是java实现的最好的搜索项目。优势当然就是开源,其他就是开源项目公共的优势。现在很多网站都使用Lucene作为其核心搜索引擎。比如 facebook这个大牌也用的lucene。
在垂直搜索领域,lucene应该是不二选择。