On behalf of the Lucene dev community (a growing community far larger than
just the committers) I would like to announce the release of Lucene Java
The new version is mostly a cleanup release without any new features. All
deprecations targeted to be removed in version 3.0 were removed. If you are
upgrading from version 2.9.1 of Lucene, you have to fix all deprecation
warnings in your code base to be able to recompile against this version.
This is the first Lucene release with Java 5 as a minimum requirement. The
API was cleaned up to make use of Java 5's generics, varargs, enums, and
autoboxing. New users of Lucene are advised to use this version for new
developments, because it has a clean, type safe new API. Upgrading users can
now remove unnecessary casts and add generics to their code, too. If you
have not upgraded your installation to Java 5, please read the file
JRE_VERSION_MIGRATION.txt (please note that this is not related only to this
version of Lucene, it will also happen with any previous release when you
upgrade your Java environment).
Lucene 3.0.0 has some changes regarding compressed fields: 2.9.0 already
deprecated compressed fields; support for them was removed now. Lucene 3.0.0
is still able to read indexes with compressed fields, but as soon as merges
occur or the index is optimized, all compressed fields are decompressed and
converted to Field.Store.YES. Because of this, indexes with compressed
fields can suddenly get larger.
While we generally try and maintain full backwards compatibility between
major versions, Lucene 3.0.0 has some minor breaks, mostly related to
deprecation removal, pointed out in the 'Changes in backwards compatibility
policy' section of CHANGES.txt. Notable are:
- IndexReader.open(Directory) now opens in read-only mode per default (this
method was deprecated because of that in 2.9.X). The same occurs to
- Already started in 2.9, core TokenStreams are now made final to enforce
the decorator pattern.
- If you interrupt an IndexWriter merge thread, IndexWriter now throws an
unchecked ThreadInterruptedException that extends RuntimeException and
clears the interrupt status.