1.9
到
2.0
的改动不是很多,主要是废弃了一些
API
,
2.0
起了一个过渡的作用。
2.1
是在
2.0
基础上做了很多的改进,提升了性能,修复了一些
Bug
等。
Lucene2.1
在索引的格式上做了一些改进,所以旧版本的
Lucene
是无法访问
2.1
版的索引文件。但是
2.1
版本的可以读写旧版本的索引文件。保持向下的兼容性。这点需要我们在使用时注意。
下面简单的列出一些新的特性:
1.
's'
和
't'
从默认的
stopwords
中移掉了。但是依然还有
'a'
也可以会有同样的问题,所以分词需要针对自己的应用进行自定义。
2.
更新了
StandardAnalyzer
中的针对
CJK
的
Unicode
代码范围。用处不大,因为我们中文需要自己开发分词。
3.
允许在
QueryParser
的最前面使用通配符
(*, ?)
,之前是不允许的。这个比较有意义,可以实现一些模糊搜索。
4.
QueryParser
默认使用
ConstantScoreRangeQuery
执行范围查询。增加了
useOldRangeQuery
属性允许在需要的情况下使用旧的
RangeQuery
5.
对于
WildcardQuery
,如果一个
term
不包含任何的
?
或者
*
,之前会抛出异常,现在会执行一个
TermQuery
。
6.
去掉了
deprecated
的
doc.fields()
方法和
Enumeration
7.
write lock
现在默认的位置是索引的目录,简单命名为
write.lock
8.
新的
FieldSelector API
,相关的
IndexReader
和实现都发生了变化。新的
Fieldable
接口被用作字段的延迟加载上。
9.
使用
MultiFieldQueryParser
的时候可以为不同的
field
指定不同的
boosts
10.
新的方法
IndexWriter.addIndexesNoOptimize()
在新添加一个新的
segments
的时候,只进行合并,不进行优化。
11.
QueryParser
允许在引号和短语中使用反斜线
12.
增加了方法
RAMDirectory.sizeInBytes(), IndexWriter.ramSizeInBytes()
和
IndexWriter.flushRamSegments()
,允许应用程序控制索引时缓存文档对内存的使用,这些蛮有用的,可以用于监控索引的过程。
13.
QueryParser
解析
*:*
为匹配所有的内容
14.
可以通过命令行在已经存在的索引文件中修改和删除
field
15.
IndexWriter
增加了方法来高效得更新
documents
。增加
IndexWriter.flush()
方法将内存的内容刷新到文件系统。
小兵 2007-3-22