Recs.
Updated
Apache Solr is an open-source search server from the Apache Software Foundation Lucene project. Used and trusted by the largest corporations, is is an enterprise grade, performant and secure search server. Deploy it in your own data room, in the cloud, through Docker, or one of the hosted Solr offerings.
Specs
Pros
Pro Customizablity
A key differentiator of Solr is the level of customizability the SearchComponent feature provides.
SearchComponent provides the developer astonishing flexibility in the way search queries are assembled and executed. At the time of writing, there does not appear to be a ElasticSearch equivalent of SearchComponent. source
Whilst ElasticSearch has a number of plugin-points there doesn't appear to be an equivalent of Solr's SearchComponent that enables you to modify the workflow of existing API endpoints.
Pro 100% open and free forever
Being an Apache Software Foundation product, Solr is guaranteed to remain 100% open source forever. No single corporation or group of people control Solr, but it is governed by a broad Project Management Committee (PMC) and maintained by 50+ committers voted in for their notable contributions and other merits.
Pro Large, active community
The community of users, programmers, consultants and downstream products is large and vibrant. The community maintains the product development, fixes bugs, provides professional support, consulting, training, 3rd party plugins etc. Whenever you have a question or problem, you will always find a helpful community member ready to answer.
Pro Hosting Support
The following services will host Solr for you. The great thing about these services is that they abstract away some of the difficulty of scaling Solr:
Pro Local params
Solr has a great feature that enables you to use LocalParams to perform more advanced faceting. They provide a way to "localize" information about a specific argument that is being sent to Solr. In other words, LocalParams provide a way to add meta-data to certain argument types such as query strings. From the Solr Wiki:
LocalParams are expressed as prefixes to arguments to be sent to Solr. For example:
Assume we have the existing query parameter
q=solr rocks
We can prefix this query string with LocalParams to provide more information to the query parser, for example changing the default operator type to "AND" and the default field to "title" for the lucene query parser:
q={!q.op=AND df=title}solr rocks
Cons
Con Missing some useful features for cloud distribution
Solr is currently missing the following features that are useful when managing a distributed system:
- Automatic shard rebalancing
- Ability to re-locate shards and replicas on demand
Con Other Missing Features
Solr is currently missing the following general features:
- Per-doc/query analyzer chain
- Support for multiple document types per schema
- Equivalent to Elasticsearch's percolation