Apache > Lucene
 

Apache Lucene - Overview

Apache Lucene

Apache Lucene(TM) is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

Apache Lucene is an open source project available for free download. Please use the links on the left to access Lucene.

The Apache Software Foundation

The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are defined by collaborative consensus based processes, an open, pragmatic software license and a desire to create high quality software that leads the way in its field. Apache Lucene, Apache Solr, Apache Lucene.NET, Apache PyLucene, Apache Open Relevance Project, Apache Lucy and Apache Droids and their respective logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.

Lucene News

18 June 2010 - Lucene Java 3.0.2 and 2.9.3 available

Both releases fix bugs in the previous versions:

  • 2.9.3 is a bugfix release for the Lucene Java 2.x series, based on Java 1.4.
  • 3.0.2 has the same bug fix level but is for the Lucene Java 3.x series, based on Java 5.

New users of Lucene are advised to use version 3.0.2 for new developments, because it has a clean, type-safe API.

Important improvements in these releases include:

  • Fixed memory leaks in IndexWriter when large documents are indexed. It also uses now shared memory pools for term vectors and stored fields. IndexWriter now releases Fieldables and Readers on close.
  • NativeFSLockFactory fixes and improvements. Release write lock if exception occurs in IndexWriter ctors.
  • Improve concurrency of IndexReader, especially in the context of near real-time readers.
  • Near real-time readers, opened while addIndexes* is running, no longer miss some segments.
  • Performance improvements in ParallelMultiSearcher (3.0.2 only).
  • IndexSearcher no longer throws NegativeArraySizeException if you pass Integer.MAX_VALUE as nDocs to search methods.

Both releases are fully compatible with the corresponding previous versions. We strongly recommend upgrading to 2.9.3 if you are using 2.9.x; and to 3.0.2 if you are using 3.0.x.

See 3.0.2 CHANGES and 2.9.3 CHANGES for details. Binary and source distributions are available here. Maven artifacts are available here.

26 February 2010 - Lucene Java 3.0.1 and 2.9.2 available

Both releases fix bugs in the previous versions:

  • 2.9.2 is a bugfix release for the Lucene Java 2.x series, based on Java 1.4.
  • 3.0.1 has the same bug fix level but is for the Lucene Java 3.x series, based on Java 5.

New users of Lucene are advised to use version 3.0.1 for new developments, because it has a clean, type-safe API.

Important improvements in these releases include:

  • An increased maximum number of unique terms in each index segment.
  • Fixed experimental CustomScoreQuery to respect per-segment search. This introduced an API change!
  • Important fixes to IndexWriter: a commit() thread-safety issue, lost document deletes in near real-time indexing.
  • Bugfixes for Contrib's Analyzers package.
  • Restoration of some public methods that were lost during deprecation removal (3.0.1 only).
  • The new Attribute-based TokenStream API now works correctly with different class loaders.

Both releases are fully compatible with the corresponding previous versions. We strongly recommend upgrading to 2.9.2 if you are using 2.9.1 or 2.9.0; and to 3.0.1 if you are using 3.0.0.

See 3.0.1 CHANGES and 2.9.2 CHANGES for details. Binary and source distributions are available here. Maven artifacts are available here.

25 November 2009 - Lucene Java 3.0.0 available

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 to Lucene 3.0, it will also happen with any previous release when you upgrade your Java environment).

Lucene 3.0 has some changes regarding compressed fields: 2.9 already deprecated compressed fields; support for them was removed now. Lucene 3.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 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). The same occurs to IndexSearcher.
  • 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.

See CHANGES for details.

Binary and source distributions are available here. Maven artifacts are available here.

6 November 2009 - Lucene Java 2.9.1 available

This release fixes bugs from 2.9.0, including one serious bug whereby BooleanQuery could silently fail to retrieve certain matching documents.

There are also some minor API changes, including a Version parameter added to QueryParser and contrib Analyzers, so that version dependent defaults are consistent across classes, as well as un-deprecating of certain methods (we were too zealous in a few cases!).

Otherwise the changes are all bug fixes and documentation improvements.

This release is fully compatible with 2.9.0. We strongly recommend upgrading to 2.9.1 if you are using 2.9.0. Furthermore, because some additional APIs were deprecated in 2.9.1, to ensure a clean ("JAR drop in") upgrade to 3.0 you'll need to ensure your code compiles against 2.9.1 without deprecation warnings.

See CHANGES for details.

Binary and source distributions are available here.

Maven artifacts are available here.