Lucene是什么Lucene 3.0简单介绍



Lucene是什么Lucene 3.0简单介绍。

概述

Lucene3.0(以下简称3.0)已于2009-11-25发布,3.0版本是重大的版本,改动很大,在api上做了很多调整,删除了很多废弃的方法 和类,并支持java5的新特性:包括泛型,可变参数,枚举和autoboxing等。因此,3.0和2.x版本是不能兼容的。如果要使用3.0,最好在 新项目中使用,而不是升级。

3.0的变化

1,2.9版本介绍

1.1索引文件改进


  Lucene的索引数据时存放在独立的文件中的,这些文件就是存储着索引数据库一些分裂的‘片段’,当我们向索引中增加文档时,便会不断的创建一些可以合 并的新片段,因为读写文件开销比较大,因此这些字段信息并非每次都直接加到索引文件中去,而是先缓存,等到一定量的时候再一次写到文件中,在2.9以 后,Lucene会为每个片段分别管理FieldCache以此避开跨片段加载FieldCatch的需求,这样就解决了Lucene跨片段加载 FieldCatch的效率很低下的问题,这个改动大大提高了性能,在5.000.000个不同字符串的情况下,Lucene相对于2.4版本获得15倍 左右的性能提高。

重开索引

   新版本引入了IndexWriter.getReader()方法,它可用于搜索目前完整的索引,包括当前IndexWriter会话中还没有提交的改 变,这带来了接近于实时搜索的能力,此外,你还可以调用IndexWriter.setMergedSegmentWarmer()方法进行“预热”。这 样那些片段便可以立即投入使用了。

数字处理

   2.9版本之前的版本,都是基于文本搜索的,因为对于很多数字的处理方式就很头疼,例如在我们项目中遇到过很多问题都是由于把数字当成了文本处理出现的 bug,Lucene2.9以后已经自带对数字的处理方式。Field和Query类会采取合适的精度进行索引和搜索,这样大大降低了需要搜索的关键字数 量,使查询的响应能力得以显著提高。