Suvarna Garge (Editor)

Apache Lucene

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Development status
  
Active

Operating system
  
Cross-platform

Written in
  
Java

Type
  
Search and index

Apache Lucene

Developer(s)
  
Apache Software Foundation

Stable release
  
6.4.1 / February 6, 2017 (2017-02-06)

Apache Lucene is a free and open-source information retrieval software library, originally written completely in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License.

Contents

Lucene has been ported to other programming languages including Object Pascal, Perl, C#, C++, Python, Ruby and PHP.

History

Doug Cutting originally wrote Lucene in 1999. It was initially available for download from its home at the SourceForge web site. It joined the Apache Software Foundation's Jakarta family of open-source Java products in September 2001 and became its own top-level Apache project in February 2005.

Lucene formerly included a number of sub-projects, such as Lucene.NET, Mahout, Tika and Nutch. These three are now independent top-level projects.

In March 2010, the Apache Solr search server joined as a Lucene sub-project, merging the developer communities.

Version 4.0 was released on October 12, 2012.

The latest version of Lucene is 6.4.1 which was released on February 6, 2017.

Features and common use

While suitable for any application that requires full text indexing and searching capability, Lucene has been widely recognized for its utility in the implementation of Internet search engines and local, single-site searching.

Lucene has also been used to implement recommendation systems. For example, Lucene's 'MoreLikeThis' Class can generate recommendations for similar documents. In a comparison of the term vector-based similarity approach of 'MoreLikeThis' with citation-based document similarity measures, such as Co-citation and Co-citation Proximity Analysis Lucene's approach excelled at recommending documents with very similar structural characteristics and more narrow relatedness. In contrast, citation-based document similarity measures, tended to be more suitable for recommending more broadly related documents, meaning citation-based approaches may be more suitable for generating serendipitous recommendations, as long as documents to be recommended contain in-text citations.

At the core of Lucene's logical architecture is the idea of a document containing fields of text. This flexibility allows Lucene's API to be independent of the file format. Text from PDFs, HTML, Microsoft Word, Mind Maps, and OpenDocument documents, as well as many others (except images), can all be indexed as long as their textual information can be extracted.

Lucene-based projects

Lucene itself is just an indexing and search library and does not contain crawling and HTML parsing functionality. However, several projects extend Lucene's capability:

  • Apache Nutch — provides web crawling and HTML parsing
  • Apache Solr — an enterprise search server
  • CrateDB — open source, distributed SQL database built on Lucene
  • Elasticsearch — an enterprise search server
  • Compass — the predecessor to Elasticsearch
  • DocFetcher — a multiplatform desktop search application
  • Lucene.NET — a port of Lucene written in C# and targeted at .NET Framework users. There are currently two variations of the software, differing in Generics support and a few bug fixes.
  • Swiftype — an enterprise search startup based on Lucene
  • Ferret — a search library for Ruby (programming language) inspired by Lucene. There is also a Ruby on Rails plugin called acts_as_ferret. Ferret utilizes Poshlib.
  • Kinosearch — a search engine written in Perl and C and a loose port of Lucene. The Socialtext wiki software uses this search engine, and so does the MojoMojo wiki. It is also used by the Human Metabolome Database (HMDB) and the Toxin and Toxin-Target Database (T3DB).
  • Apache Lucy is a successor project of both KinoSearch and Ferret, being jointly developed by the authors of these and having bindings in both Perl and Ruby.
  • Luke — A Java-based GUI for Lucene which allows you to display and modify indexes.
  • Users

    For a list of companies that use Lucene (rather than extend), see Lucene's "Powered By" page. As an example, Twitter is using Lucene for its real time search.

    References

    Apache Lucene Wikipedia