Difference between solr and lucene

darkheir picture darkheir · Mar 29, 2013 · Viewed 69.3k times · Source

I know that Lucene and Solr are 2 differents Apache projects that are made to work together, but I don't understand what is the aim of each project.

For what I understood untill now is that Lucene is used to create a search index and Solr use this index to perform searches. Am I right or is this a totally different approach?

Answer

phanin picture phanin · Mar 29, 2013

@darkheir: Lucene and Solr are 2 differents Apache projects that are made to work together, I don't understand what is the aim of each project.

1) Solr uses Lucene under the hood. Lucene has no clue about the Solr API.

2) Lucene is a powerful search engine framework that lets us add search capability to our application. It exposes an easy-to-use API while hiding all the search-related complex operations. Any application can use this library, not just Solr.

3) Solr is built around Lucene. It is not just an http-wrapper around Lucene but has been known to add more arsenal to Lucene. Solr is ready-to-use out of box. It is a web application that offers related infrastructure and a lot more features in addition to what Lucene offers.

@darkheir: Lucene is used to create a search index and Solr use this index to perform searches. Am I right or is this a totally different approach?

4) Lucene doesn't just create the Index for the consumption by Solr. Lucene handles all the search related operations. Any application can use the Lucene framework.

Examples are Solr, Elastic Search, LinkedIn (yes, under the hood), etc..

Check out this article: Lucene vs Solr

UPDATE (6/18/14)

When to use Lucene?

  • You are a search engineer AND
  • You are a programmer AND
  • You want full control over almost all the internals of Lucene AND
  • Your requirements demand you to do all sorts of geeky customization to Lucene AND
  • You are willing to take care of infrastructure elements of your search like scaling, distribution, etc.

When to use Solr?

  • At least one of the above didn't make sense. OR
  • You want something that is ready to use out-of-the-box (even without knowledge of Java) OR
  • Your infrastructure requirements outweigh search customization requirements.

NOTE: I don't mean that Solr is hard to customize. Solr is very flexible and provides a lot of pluggable API points, allowing you to throw-in your code.

There are people, falling under 'have to use Lucene' camp, but still prefer Solr to plain Lucene as it's easy to use. However, they never restrain themselves from customizing Solr to the maximum extent.

BTW, I see that there are more resources on Solr (4.x) than Lucene (4.x).