Sitecore supports both Lucene and Solr search engines. The search engines are used for searching in the content databases, as well as for searching in a number of operational databases that Sitecore uses for collecting analytics data, test data, and so forth.
If you use Sitecore Azure PaaS, you can also use Azure Search.
The search engines that are used for these two different kinds of databases do not have to be the same instance of either Lucene or Solr, and they do not even have to both be either Lucene or Solr.
When visitors search for content, they use a search engine. Therefore, this search engine must be available from the Internet. On the other hand, the search engine that Sitecore uses for the operational databases does not have to be available from the Internet.
You must use Solr if you have a scaled environment (an environment
- two or more content delivery servers
- two or more content authoring severs
- separate servers for email, processing, reporting and publishing
Solr supports calls over HTTP(S) which means that the indexes are available to all servers in the environment that require it (content management and processing servers).
Lucene is a file based indexing system, which means if an index is not located on the server that the request is coming from you have to ensure that indexes across all servers remain in sync. This is technically possible but non-trivial, and not supported.
Other reasons for using Solr are:
- When you need to index large numbers of items (50,000 and up), Solr performs better.
- Solr is more robust. If your site depends on search as the primary interface, we recommend using Solr.
- Solr can be scaled using SolrCloud.
You can move from Lucene to Solr. The LINQ queries remain the same, but there are differences in configuration and so forth that you need to address. You will also have to rebuild indexes. The move is possible, but it is not a trivial task. You should therefore use Solr if you plan to scale your site (have a distributed setup with multiple servers).
If you do move from Lucene to Solr, be aware that Lucene and Solr score search results in slightly different ways (which can look like there is something wrong unless you know this).
You can mix Lucene and Solr, and, for example, use Solr for xDB and Lucene for content search at the same time. Generally it is simpler to use Solr for everything once you need to use Solr for the operational databases.
If you configure Solr use the 64-bit version of the Java Virtual Machine (JVM) for production servers. Solr allocates 512 MB of memory by default. If you require Solr to have access to more memory you can adjust these limits when Solr starts up. See the official Solr documentation for more information.