# Apache Lucene README file

## Introduction

Lucene is a Java full-text search engine.  Lucene is not a complete
application, but rather a code library and API that can easily be used
to add search capabilities to applications.

 * The Lucene web site is at: http://lucene.apache.org/
 * Please join the Lucene-User mailing list by sending a message to:
   java-user-subscribe@lucene.apache.org

## Files in a binary distribution

Files are organized by module, for example in core/:

* `core/lucene-core-XX.jar`:
  The compiled core Lucene library.

To review the documentation, read the main documentation page, located at:
`docs/index.html`

To build Lucene or its documentation for a source distribution, see BUILD.txt
