Apache Lucene

Apache Lucene 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 offers powerful features through a simple API and provides scalable, high-performance indexing; powerful, accurate and efficient search algorithms; cross-platform solution. Lucene has very small RAM requirements (only 1MB heap), supports incremental indexing as fast as batch indexing, while the size of the generated index will be roughly 20-30% the size of text indexed. It supports ranked searching (best results returned first), many powerful query types (phrase queries, wildcard queries, proximity queries, range queries and more), searching and sorting by fields (e.g., title, author, contents), date-range and multiple-index searching, and allows simultaneous update while searching.