When comparing Solr vs Amazon CloudSearch, the Slant community recommends Solr for most people. In the question“What are the best search engines for web applications?” Solr is ranked 2nd while Amazon CloudSearch is ranked 8th. The most important reason people chose Solr is:
A key differentiator of Solr is the level of customizability the [SearchComponent](http://wiki.apache.org/solr/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](http://www.elasticsearchtutorial.com/elasticsearch-vs-solr.html) 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.
Ranked in these QuestionsQuestion Ranking
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 Open source
Pro Stats component
Solr allows to view average, standard deviation, maximum, minimum, sum of squares of a particular numeric field. It also allows faceting of that numeric field based on the value(s) of other fields.
Pro Results grouping
Solr allows you to group search results. Results can be grouped by:
- Field Value
- Query
- Function Query
You can also collapse multiple results with the same field value down to a single result.
Pro Decision tree faceting
Solr has a faceting feature called pivot facets or 'decision tree facets'. Pivot facets enable you to calculate facets inside a parents facet, for example pivoting on 'size' than 'color' returns 'color' facet counts for each 'size' facet
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
Pro SpellChecker
Solr allows has the functionality to check and correct spelling mistakes in search queries. The three main implementations are:
- IndexBasedSpellChecker
- WordBreadkSolrSpellChecker
- DirectSolrSpellChecker
Pro Easy to Integrate and Manage
The primary differentiator of CloudSearch is how simple it makes the lives of the developers using it. Not only does it automatically scale, developers can change search parameters, fine tune search relevance, and apply new settings at any time without having to upload the data again and can do so from a simple dashboard.
CloudSearch also automatically takes care of:
- Hardware provisioning
- Data partitioning,
- Software patches.
Pro Scalability
CloudSearch dynamically scales as the amount of searchable data increases or as the query rate changes. The search system utilizes well-understood and automated sharding and replication to scale.
CloudSearch will automatically add search instances and index partitions as required as well as add and remove replicas to respond to changes in search request traffic.
Pro Search features
CloudSearch lets you add the the following features:
- Faceted search
- Free text search
- Boolean search expressions
- Customized relevance ranking
- Field-based sorting and searching
- Text processing options such as stopwords, synonyms, and stemming.
Pro Results Ranking
CloudSearch does out-of-the-box ranking of search results with simple controls to let developers tweak the ranking. You can add stopwords, perform stemming, and add synonyms.
Cons
Con General missing features
Solr is currently missing the following general features:
- Per-doc/query analyzer chain
- Support for nested documents
- Support for multiple document types per schema
- Ability to modify document scores with custom scripts
- Equivalent to Elasticsearch's percolation
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
- Ability to change the schema without restarting the server
- Ability to search across multiple indexes.
Con No AutoComplete/Suggest
Does not have the functionality to either autocomplete the users search query or suggest an alternative query ("Did you mean?").
Con No 'More like this'
CloudSearch doesn't support the 'More like this' or 'Find similar' features.
Con Propriety Tech
While ElasticSearch and Solr both have active open-source communities propelling the technology forward, CloudSearch is closed. This has multiple disadvantages such as:
- Constrained by what Amazon allows you to modify/customize.
- No transparency behind new feature development.
- Potentially slower development of new features.
- No way to modify/extend the search algorithms.
- No existing language specific API to call the Cloudsearch and process the response into objects.
Con No Geolocation search
No way to sort and filter by distance.