{% extends "lucene/core/page.html" %}

{% block content %}
<div>
  {{ super() }}
  <h3 id="lucene-{{ LUCENE_LATEST_RELEASE | replace(".", "") }}">Lucene {{ LUCENE_LATEST_RELEASE }}
    <a class="headerlink" href="#lucene-{{ LUCENE_LATEST_RELEASE | replace(".", "") }}" title="Permanent link">¶</a>
  </h3>

  <p>Lucene {{ LUCENE_LATEST_RELEASE }} is the most recent Apache Lucene release.</p>

  <ul>
    <li>Source release:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}-src.tgz">lucene-{{ LUCENE_LATEST_RELEASE }}-src.tgz</a>
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}-src.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}-src.tgz.sha512">SHA512</a>]
    </li>

    <li>Binary releases:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}.tgz">lucene-{{ LUCENE_LATEST_RELEASE }}.tgz</a>
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_LATEST_RELEASE }}/lucene-{{ LUCENE_LATEST_RELEASE }}.tgz.sha512">SHA512</a>]
    </li>

    <li><a href="{{ SITEURL }}/core/{{ LUCENE_LATEST_RELEASE | replace(".", "_") }}/changes/Changes.html">Change log</a></li>
  </ul>

  <h3 id="lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE | replace(".", "") }}">Lucene {{ LUCENE_PREVIOUS_MAJOR_RELEASE }}
    <a class="headerlink" href="#lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE | replace(".", "") }}" title="Permanent link">¶</a>
  </h3>

  <p>Lucene {{ LUCENE_PREVIOUS_MAJOR_RELEASE }} is the latest in the {{ LUCENE_PREVIOUS_MAJOR_RELEASE.split('.') | first }}.x series.</p>

  <ul>
    <li>Source release:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}-src.tgz">lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}-src.tgz</a>
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}-src.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}-src.tgz.sha512">SHA512</a>]
    </li>

    <li>Binary releases:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.tgz">lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.tgz</a>
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.tgz.sha512">SHA512</a>]
      /
      <a href="https://www.apache.org/dyn/closer.lua/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.zip">lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.zip</a>
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.zip.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/java/{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}/lucene-{{ LUCENE_PREVIOUS_MAJOR_RELEASE }}.zip.sha512">SHA512</a>]
    </li>

    <li><a href="{{ SITEURL }}/core/{{ LUCENE_PREVIOUS_MAJOR_RELEASE | replace(".", "_") }}/changes/Changes.html">Change log</a></li>
  </ul>

  <p>The above release files should be verified using the PGP signatures and the <a href="https://downloads.apache.org/lucene/KEYS">project release KEYS</a>.
  See <a href="https://www.apache.org/dyn/closer.cgi#verify">verification instructions</a> for a description of using the PGP and KEYS files for verification.
  SHA checksums are also provided as alternative verification method.</p>

  <h3 id="older-releases">Older releases
    <a class="headerlink" href="#older-releases" title="Permanent link">¶</a>
  </h3>

  <p>Archives for all past versions of Lucene are available at <a href="https://archive.apache.org/dist/lucene/java/">the Apache archives</a>.</p>
  <p>The <tt>lucene-VERSION.zip</tt> or <tt>.tar.gz</tt> (where VERSION is the version number of the release, e.g. 3.0.1) file contains the
  lucene-core jar file, html documentation, a demo application (see the "Getting Started" section) and various jar files containing contributed code.
  The <tt>lucene-VERSION-src.zip</tt> or <tt>.tar.gz</tt> contains the full source code for that version.</p>
</div>
{% endblock %}
