<?xml version="1.0"?>
<document>
	<header>
        <title>
	Apache Lucene - Overview
		</title>
	</header>
    <body>
        <section id="Apache Lucene">
            <title>Apache Lucene</title>
            <p>
                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.
            </p>
            <p>
                Apache Lucene is an open source project available for
                <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">free download</a>.
                Please use the links on the left to access Lucene.
            </p>
        </section>
		<section><title>The Apache Software Foundation</title>
			<p>The <a href="ext:asf">Apache Software Foundation</a> 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 PyLucene, Apache Open Relevance Project 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.</p>
		</section>
		
        <section id="Lucene News">
          <title>Lucene News</title>
          	               <section>
		  <title>27 November 2011 - Lucene Core 3.5.0</title>
		  <p>The Lucene PMC is pleased to announce the availability of Apache Lucene 3.5.0.
		  </p>
		  <p>Lucene can be downloaded from <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">http://www.apache.org/dyn/closer.cgi/lucene/java/</a>.  Maven artifacts are available <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.</p>

		  <p>See <a href="http://lucene.apache.org/java/3_5_0/changes/Changes.html">CHANGES</a> and
		  <a href="http://lucene.apache.org/java/3_5_0/changes/Contrib-Changes.html">contrib CHANGES</a>
		  for details.</p>

		  <p>Highlights of the Lucene release include:</p>
		  <ul>
		    <li>Added a very substantial (3-5X) RAM reduction required to hold the
		    terms index on opening an IndexReader. (<a href="https://issues.apache.org/jira/browse/LUCENE-2205">LUCENE-2205</a>)</li>

		    <li>Added IndexSearcher.searchAfter which returns results after a 
		    specified ScoreDoc (e.g. last document on the previous page) to 
		    support deep paging use cases. 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-2215">LUCENE-2215</a>)
		    </li>
		    <li>
		    Added SearcherManager to manage sharing and reopening IndexSearchers 
		    across multiple search threads. Underlying IndexReader instances are 
		    safely closed if not referenced anymore. 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-3445">LUCENE-3445</a>, 
		    <a href="https://issues.apache.org/jira/browse/LUCENE-3558">LUCENE-3558</a>)
		    </li>
		    <li>Added SearcherLifetimeManager which safely provides a consistent 
		    view of the index across multiple requests (e.g. paging/drilldown). 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-3558">LUCENE-3558</a>, 
		    <a href="https://issues.apache.org/jira/browse/LUCENE-3486">LUCENE-3486</a>)
		    </li>
		    <li>Renamed IndexWriter.optimize to forceMerge to discourage use of 
		    this method since it is horribly costly and rarely justified anymore. 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-3454">LUCENE-3454</a>)
		    </li>
		    <li>Added NGramPhraseQuery that speeds up phrase queries 30-50% when
		     n-gram analysis is used. (<a href="https://issues.apache.org/jira/browse/LUCENE-3426">LUCENE-3426</a>)
		    </li>
		    <li>Added a new reopen API (IndexReader.openIfChanged) that returns 
		    null instead of the old reader if there are no changes in the index. 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-3464">LUCENE-3464</a>)
		    </li>
		    <li>Improvements to vector highlighting: support for more queries 
		    such as wildcards and boundary analysis for generated snippets. 
		    (<a href="https://issues.apache.org/jira/browse/LUCENE-1824">LUCENE-1824</a>, 
		    <a href="https://issues.apache.org/jira/browse/LUCENE-1889">LUCENE-1889</a>)
		    </li>
		    <li>IndexSearcher and IndexReader now perform additional checks to 
		    throw AlreadyClosedExceptions if searches are performed on a 
		    closed IndexReader. Performing searches on already closed reader can 
		    cause JVM crashes when invalid memory mapped files are referenced. 
		    </li>
		    <li>Several bugfixes, including a bug where closing an NRT reader 
		    after the writer was closed was incorrectly invoking the 
		    DeletionPolicy. See CHANGES.txt entries for full details.
		    </li>
		  </ul>
		</section>
        <section><title>26 October 2011 - Java 7u1 fixes index corruption and crash bugs in Apache Lucene Core and Apache Solr</title>
          <p>Oracle released <a href="http://www.oracle.com/technetwork/java/javase/7u1-relnotes-507962.html">Java 7u1</a> on October 19.
          According to the release notes and tests done by the Lucene committers, all bugs reported on July 28 are fixed in this release,
          so code using Porter stemmer no longer crashes with <code>SIGSEGV</code>. We were not able to experience any index corruption anymore,
          so it is safe to use Java 7u1 with Lucene Core and Solr.</p>
          <p>On the same day, Oracle released <a href="http://www.oracle.com/technetwork/java/javase/6u29-relnotes-507960.html">Java 6u29</a>
          fixing the same problems occurring with Java 6, if the JVM switches <code>-XX:+AggressiveOpts</code>
          or <code>-XX:+OptimizeStringConcat</code> were used. Of course, you should <strong>not</strong> use experimental JVM options like
          <code>-XX:+AggressiveOpts</code> in production environments! We recommend everybody to upgrade to this latest version 6u29.</p>
          <p>In case you upgrade to Java 7, remember that you may have to reindex, as the unicode
          version shipped with Java 7 changed and tokenization behaves differently
          (e.g. lowercasing). For more information, read <code>JRE_VERSION_MIGRATION.txt</code>
          in your distribution package!</p>
        </section>

                <section>
		  <title>14 September 2011 - Lucene Core 3.4.0</title>
		  <p>The Lucene PMC is pleased to announce the availability of Apache Lucene 3.4.0.
		  </p>
		  <p>Lucene can be downloaded from <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">http://www.apache.org/dyn/closer.cgi/lucene/java/</a>.  Maven artifacts are available <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.</p>

		  <p>If you are already using Apache Lucene 3.1, 3.2 or 3.3, we strongly recommend you upgrade to 3.4.0 because of the index corruption bug on OS or computer crash or power loss (<a href="https://issues.apache.org/jira/browse/LUCENE-3418">LUCENE-3418</a>), now fixed in 3.4.0.</p>

		  <p>See <a href="http://lucene.apache.org/java/3_4_0/changes/Changes.html">CHANGES</a> and
		  <a href="http://lucene.apache.org/java/3_4_0/changes/Contrib-Changes.html">contrib CHANGES</a>
		  for details.</p>

		  <p>Highlights of the Lucene release include:</p>
		  <ul>
		    <li>Fixed a major bug (<a href="https://issues.apache.org/jira/browse/LUCENE-3418">LUCENE-3418</a>) whereby a Lucene index could
		    easily become corrupted if the OS or computer crashed or lost
		    power.</li>

		    <li>Added a new faceting module (<code>contrib/facet</code>) for computing facet
		    counts (both hierarchical and non-hierarchical) at search
		    time (<a href="https://issues.apache.org/jira/browse/LUCENE-3079">LUCENE-3079</a>).</li>

		    <li>Added a new join module (<code>contrib/join</code>), enabling indexing and
		    searching of nested (parent/child) documents using
		    <code>BlockJoinQuery</code>/<code>Collector</code> (<a href="https://issues.apache.org/jira/browse/LUCENE-3171">LUCENE-3171</a>).</li>

		    <li>It is now possible to index documents with term frequencies
		    included but without positions (<a href="https://issues.apache.org/jira/browse/LUCENE-2048">LUCENE-2048</a>); previously
		    <code>omitTermFreqAndPositions</code> always omitted both.</li>

		    <li>The modular <code>QueryParser</code> (<code>contrib/queryparser</code>) can now create
		    <code>NumericRangeQuery</code>.</li>

		    <li>Added SynonymFilter, in <code>contrib/analyzers</code>, to apply multi-word
		    synonyms during indexing or querying, including parsers to read
		    the wordnet and solr synonym formats (<a href="https://issues.apache.org/jira/browse/LUCENE-3233">LUCENE-3233</a>).</li>

		    <li>You can now control how documents that don't have a value on the
		    sort field should sort (<a href="https://issues.apache.org/jira/browse/LUCENE-3390">LUCENE-3390</a>), using <code>SortField.setMissingValue</code>.</li>

		    <li>Fixed a case where term vectors could be silently deleted from the
		    index after <code>addIndexes</code> (<a href="https://issues.apache.org/jira/browse/LUCENE-3402">LUCENE-3402</a>).</li>
		  </ul>
		</section>

        <section><title>28 July 2011 - WARNING: Index corruption and crashes in Apache Lucene Core / Apache Solr with Java 7</title>
          <p>Oracle released <a href="http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-429209.html">Java 7</a> today.
          Unfortunately it contains hotspot compiler optimizations, which miscompile some loops.
          This can affect code of several Apache projects. Sometimes JVMs only crash, but in several cases,
          results calculated can be incorrect, leading to bugs in applications
          (see Hotspot bugs <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7070134">7070134</a>,
          <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7044738">7044738</a>,
          <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068051">7068051</a>).</p>
          <p><strong>Apache Lucene Core</strong> and <strong>Apache Solr</strong> are two Apache projects,
          which are affected by these bugs, namely all versions released until today.
          Solr users with the default configuration will have
          Java crashing with <code>SIGSEGV</code> as soon as they start to index documents, as one
          affected part is the well-known Porter stemmer
          (see <a href="https://issues.apache.org/jira/browse/LUCENE-3335">LUCENE-3335</a>).
          Other loops in Lucene may be miscompiled, too, leading to index corruption
          (especially on Lucene trunk with pulsing codec; other loops may be
          affected, too - <a href="https://issues.apache.org/jira/browse/LUCENE-3346">LUCENE-3346</a>).</p>
          <p>These problems were detected only 5 days before the official Java 7 release,
          so Oracle had no time to fix those bugs, affecting also many more applications.
          In response to our questions, they proposed to include the fixes into service
          release u2 (eventually into service release u1, see
          <a href="http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2011-July/005971.html">this mail</a>).
          <strong>This means you cannot use Apache Lucene/Solr with Java 7 releases before Update 2!</strong>
          If you do, please don't open bug reports, it is not the committers' fault!
          At least disable loop optimizations using the <code>-XX:-UseLoopPredicate</code> JVM option
          to not risk index corruptions.</p>
          <p><em>Please note:</em> Also Java 6 users are affected, if they use one of those
          JVM options, which are <strong>not</strong> enabled by default: <code>-XX:+OptimizeStringConcat</code>
          or <code>-XX:+AggressiveOpts</code>.</p>
          <p>It is strongly recommended not to use any hotspot optimization switches in any Java
          version without extensive testing!</p>
          <p>In case you upgrade to Java 7, remember that you may have to reindex, as the unicode
          version shipped with Java 7 changed and tokenization behaves differently
          (e.g. lowercasing). For more information, read <code>JRE_VERSION_MIGRATION.txt</code>
          in your distribution package!</p>
        </section>
                <section><title>1 July 2011 - Lucene Core 3.3</title>
                        <p>The Lucene PMC is pleased to announce the availability of Apache Lucene 3.3.
                        </p>
                        <p>Lucene can be downloaded from <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">http://www.apache.org/dyn/closer.cgi/lucene/java/</a></p>
                        <p>Highlights of the Lucene release include:
                        </p>
                        <ul>
                           <li>The spellchecker module now includes suggest/auto-complete functionality,
                               with three implementations: Jaspell, Ternary Trie, and Finite State.</li>
                           <li>Support for merging results from multiple shards, for both "normal"
                               search results (TopDocs.merge) as well as grouped results using the
                               grouping module (SearchGroup.merge, TopGroups.merge).</li>
                           <li>An optimized implementation of KStem, a less aggressive stemmer
                               for English</li>
                           <li>Single-pass grouping implementation based on block document indexing.</li>
                           <li>Improvements to MMapDirectory (now also the default implementation 
                               returned by FSDirectory.open on 64-bit Linux).</li>
                           <li>NRTManager simplifies handling near-real-time search with multiple
                               search threads, allowing the application to control which indexing
                               changes must be visible to which search requests.</li>
                           <li>TwoPhaseCommitTool facilitates performing a multi-resource
                               two-phased commit, including IndexWriter.</li>
                           <li>The default merge policy, TieredMergePolicy, has a new method
                               (set/getReclaimDeletesWeight) to control how aggressively it
                               targets segments with deletions, and is now more aggressive than
                               before by default.</li>
                           <li>PKIndexSplitter tool splits an index by a mid-point term.</li>
                        </ul>
                        <p>
                               See <a href="http://lucene.apache.org/java/3_3_0/changes/Changes.html">CHANGES</a> and
                               <a href="http://lucene.apache.org/java/3_3_0/changes/Contrib-Changes.html">contrib CHANGES</a>
                               for details.
                               <strong>Binary and source distributions are available
                               <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">here</a>.</strong>
                               Maven artifacts are available
                               <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.
                        </p>
                </section>
                <section><title>4 June 2011 - Lucene Core 3.2</title>
                        <p>The Lucene PMC is pleased to announce the availability of Apache Lucene 3.2.
                        </p>
                        <p>Lucene can be downloaded from <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">http://www.apache.org/dyn/closer.cgi/lucene/java/</a></p>
                        <p>Highlights of the Lucene release include:
                        </p>
                        <ul>
                           <li>A new grouping module, under lucene/contrib/grouping, enables
                               search results to be grouped by a single-valued indexed field</li>
                           <li>A new IndexUpgrader tool fully converts an old index to the
                               current format.</li>
                           <li>A new Directory implementation, NRTCachingDirectory, caches small
                               segments in RAM, to reduce the I/O load for applications with fast
                               NRT reopen rates.</li>
                           <li>A new Collector implementation, CachingCollector, is able to
                               gather search hits (document IDs and optionally also scores) and
                               then replay them.  This is useful for Collectors that require two
                               or more passes to produce results.</li>
                           <li>Index a document block using IndexWriter's new addDocuments or
                               updateDocuments methods.  These experimental APIs ensure that the
                               block of documents will forever remain contiguous in the index,
                               enabling interesting future features like grouping and joins.</li>
                           <li>A new default merge policy, TieredMergePolicy, which is more
                               efficient due to being able to merge non-contiguous segments.  
                               See <a href="http://s.apache.org/merging">http://s.apache.org/merging</a> for details.</li>
                           <li>NumericField is now returned correctly when you load a stored
                               document (previously you received a normal Field back, with the
                               numeric value converted string).</li>
                           <li>Deleted terms are now applied during flushing to the newly flushed
                               segment, which is more efficient than having to later initialize a
                               reader for that segment.</li>
                        </ul>
                        <p>
                               See <a href="http://lucene.apache.org/java/3_2_0/changes/Changes.html">CHANGES</a> and
                               <a href="http://lucene.apache.org/java/3_2_0/changes/Contrib-Changes.html">contrib CHANGES</a>
                               for details.
                               <strong>Binary and source distributions are available
                               <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">here</a>.</strong>
                               Maven artifacts are available
                               <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.
                        </p>
                </section>
		<section><title>31 March 2011 - Lucene Core 3.1</title>
			<p>The Lucene PMC is pleased to announce the availability of Apache Lucene 3.1.
			</p>
			<p>Lucene can be downloaded from <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">http://www.apache.org/dyn/closer.cgi/lucene/java/</a></p>
			<p>Highlights of the Lucene release include:
			</p>
      <ul>
					<li>Numerous performance improvements: faster exact PhraseQuery; merging
					  favors segments with deletions; primary key lookup is faster;
					  IndexWriter.addIndexes(Directory[]) uses file copy instead of
					  merging; various Directory performance improvements; compound file
					  is dynamically turned off for large segments; fully deleted segments
					  are dropped on commit; faster snowball analyzers (in contrib);
					  ConcurrentMergeScheduler is more careful about setting priority of
					  merge threads.</li>
					<li>ReusableAnalyzerBase makes it easier to reuse TokenStreams
					  correctly.</li>
					<li>Improved Analysis capabilities: Improved Unicode support, including
					  Unicode 4, more friendly term handling (CharTermAttribute), easier
					  object reuse and better support for protected words in lossy token
					  filters (e.g. stemmers).</li>
					<li>ConstantScoreQuery now allows directly wrapping a Query.</li>
					<li>IndexWriter is now configured with a new separate builder API,
					  IndexWriterConfig.  You can now control IndexWriter's previously
					  fixed internal thread limit by calling setMaxThreadStates.</li>
					<li>IndexWriter.getReader is replaced by IndexReader.open(IndexWriter).
					  In addition you can now specify whether deletes should be resolved
					  when you open an NRT reader.</li>
					<li>MultiSearcher is deprecated; ParallelMultiSearcher has been
					  absorbed directly into IndexSearcher.</li>
					<li>On 64bit Windows and Solaris JVMs, MMapDirectory is now the
					  default implementation (returned by FSDirectory.open).
					  MMapDirectory also enables unmapping if the JVM supports it.</li>
					<li>New TotalHitCountCollector just counts total number of hits.</li>
					<li>ReaderFinishedListener API enables external caches to evict entries
					  once a segment is finished.</li>
				</ul>
		</section>
       <section>
        <title>3 December 2010 - Lucene Java 3.0.3 and 2.9.4 available</title>
        <p>
          Both releases fix bugs in the previous versions:
        </p><ul>
          <li>
            <a href="http://lucene.apache.org/java/2_9_4/">2.9.4</a> is a bugfix release for the Lucene Java 2.x series, based on Java 1.4.
          </li><li>
            <a href="http://lucene.apache.org/java/3_0_3/">3.0.3</a> has the same bug fix level but is for the Lucene Java 3.x series, based on Java 5.
          </li>
        </ul><p>
          New users of Lucene are advised to use version 3.0.3 for new developments, because it has a clean, type-safe API.
        </p><p>
          <strong>This release contains numerous bug fixes and improvements since 2.9.3 / 3.0.2, including:</strong>
        </p><ul>
          <li>a memory leak in <code>IndexWriter</code> exacerbated by frequent commits</li>
          <li>a file handle leak in <code>IndexWriter</code> when near-real-time readers are opened with compound file format enabled</li>
          <li>a rare index corruption case on disk full</li>
          <li><code>NumericRangeQuery</code> / <code>NumericRangeFilter</code> sometimes returning incorrect results
            with bounds near <code>Long.MIN_VALUE</code> and <code>Long.MAX_VALUE</code></li>
          <li>various thread safety issues</li>
          <li>Lucene 2.9.4 can now also read indexes created by 3.0.x</li>
        </ul><p>
          Both releases are fully compatible with the corresponding previous versions. We strongly recommend upgrading to 2.9.4 if you are using 2.9.x; and to 3.0.3 if you are using 3.0.x.
        </p><p>
          See <a href="http://lucene.apache.org/java/3_0_3/changes/Changes.html">3.0.3 CHANGES</a> and
          <a href="http://lucene.apache.org/java/2_9_4/changes/Changes.html">2.9.4 CHANGES</a>
          for details.
          <strong>Binary and source distributions are available
          <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">here</a>.</strong>
          Maven artifacts are available 
          <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.
        </p>
       </section>
       <section>
        <title>18 June 2010 - Lucene Java 3.0.2 and 2.9.3 available</title>
        <p>
          Both releases fix bugs in the previous versions:
        </p><ul>
          <li>
            <a href="http://lucene.apache.org/java/2_9_3/">2.9.3</a> is a bugfix release for the Lucene Java 2.x series, based on Java 1.4.
          </li><li>
            <a href="http://lucene.apache.org/java/3_0_2/">3.0.2</a> has the same bug fix level but is for the Lucene Java 3.x series, based on Java 5.
          </li>
        </ul><p>
          New users of Lucene are advised to use version 3.0.2 for new developments, because it has a clean, type-safe API.
        </p><p>
          <strong>Important improvements in these releases include:</strong>
        </p><ul>
          <li>Fixed memory leaks in <code>IndexWriter</code> when large documents are indexed.
						It also uses now shared memory pools for term vectors and stored fields.
						<code>IndexWriter</code> now releases <code>Fieldable</code>s and
						<code>Reader</code>s on close.</li>
          <li><code>NativeFSLockFactory</code> fixes and improvements. Release write lock
						if exception occurs in <code>IndexWriter</code> ctors.</li>
					<li>Improve concurrency of <code>IndexReader</code>, especially in the context of near real-time readers.</li>
					<li>Near real-time readers, opened while <code>addIndexes*</code> is running, no longer miss some segments.</li>
					<li>Performance improvements in <code>ParallelMultiSearcher</code> (3.0.2 only).</li>
          <li><code>IndexSearcher</code> no longer throws <code>NegativeArraySizeException</code> if you pass
						<code>Integer.MAX_VALUE</code> as <code>nDocs</code> to search methods.</li>
        </ul><p>
          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.
        </p><p>
          See <a href="http://lucene.apache.org/java/3_0_2/changes/Changes.html">3.0.2 CHANGES</a> and
          <a href="http://lucene.apache.org/java/2_9_3/changes/Changes.html">2.9.3 CHANGES</a>
          for details.
          <strong>Binary and source distributions are available
          <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">here</a>.</strong>
          Maven artifacts are available 
          <a href="http://repo1.maven.org/maven2/org/apache/lucene/">here</a>.
        </p>
       </section>
       
     </section>

    </body>
</document>
