Lucene Vs Solr
Lucene is a search library built in Java. Solr is a web application built on top of Lucene. Certainly Solr = Lucene + Added features. Often there would a question, when to choose Solr and when to choose 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.
- To have more control. It is a plain Jar and it could be used as the way we require.
- Cannot depend on any Web server.
- To use termvector, termdocs etc. For example, to calculate the most indexed term in a given period of time. TermVector gives information about the terms and its occurances.
- Lot of contrib modules like spell checker, hit highlighting are available.
- Near real time search support.
- It is widely used in many of the open source projects. There are lot more derivate search products available on top of Lucene.
- Incremental Updates: When ever new documents are added, IndexReader needs to reopen to get the new documents reflect in search.
- Warming the searcher: When ever new searcher is opened or reopened, It should be warmed by performing couple of search. This will help to load the cache and subsequent search will be faster.
Solr major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, and rich document (e.g., Word, PDF) handling. Solr is highly scalable, providing distributed search and index replication, and it powers the search and navigation features of many of the world's largest internet sites. This site is powered by Solr.
Solr uses the Lucene Java search library at its core for full-text indexing and search, and has REST-like HTTP/XML and JSON APIs.
- To index and search docs easily by writting few code
- Solr is a standalone App and it takes care most of the stuff like incremental updates, warmup the reader etc.
- Solr could be extended to multiple nodes. It supports distributed search but not distributed indexing.
- To use Facet search and hit highlighting.
- For Java developers, Solrj library is available, which helps to communicate with the server via API.
- Solr could be used from any programming language which supports HTTP/XML and JSON.
Summary: To get more control use Lucene. For faster development, easy to learn, choose Solr.