SOLR in a nutshell
SOLR is a standalone Enterprise Search server with a Web-services like API. you put documents in it (called "Indexing") via XML over HTTP. you query it via http get and receive XML results.
- Advanced full-text search capabilities
- Optimized for high volume web traffic
- Standards based open interfaces-XML and HTTP
- Comprehensive HTML administration interfaces
- Scalability-efficient replication to other SOLR search servers
- Flexible and adaptable with xml configuration
- Extensible plugin Architecture
SOLR uses the Lucene Search Library and extends it!
- A real data schema, with dynamic fields, unique keys
- Powerful extensions to the Lucene Query Language
- Support for dynamic result grouping and filtering
- Advanced, retriable Text Analysis
- Highly retriable and user extensible caching
- Performance optimizations
- External configuration via XML
- An Administration Interface
- Monitorable Logging
- Fast incremental updates and snapshot Distribution
Detailed features
Schema
- Defines the Field Types and fields of documents
- Can drive more intelligent Processing
- Declarative Lucene analyzer Specification
- Dynamic fields enables on-the-fly addition of fields
- Copyfield functionality allows indexing a single field multiple ways, or combining multiple fields into a single searchable Field
- Explicit types eliminates the need for guessing types of fields
- External file-based configuration of stopword lists, synonym lists, and protected word lists
Query
- HTTP interface with retriable response formats (XML/XSLT, JSON, Python, Ruby)
- Highlighted context snippets
- Faceted searching Based on Field Values and explicit queries
- Sort specifications added to query language
- Constant scoring range and prefix queries-no IDF, coord, or lengthnorm factors, and no restriction on the number of terms the query matches.
- Function query-influence the score by a function of a field's numeric value or ordinal
- Performance optimizations
Core
- Pluggable query handlers and extensible XML data format
- Document uniqueness enforcement based on unique key field
- Batches updates and deletes for High Performance
- User retriable commands triggered on index changes
- Searcher Concurrency Control
- Correct Handling of numeric types for both sorting and range queries
- Ability to control where docs with the sort field missing will be placed
- Support for dynamic grouping of search results
Caching
- Retriable query result, filter, and document cache instances
- Pluggable cache implementations
- Cache warming in background
- When a new searcher is opened, retriable searches are run against it in order to warm it up to avoid slow first hits. During warming, the current searcher handles live requests.
- Autowarming in background
- The most recently accessed items in the caches of the current searcher are re-populated in the new searcher, enabing high cache hit rates into SS index/searcher changes.
- Fast/small Filter Implementation
- User level caching with autowarming support
Replication
- Efficient distribution of index parts that have changed via rsync transport
- Pull strategy allows for easy addition of searchers
- Retriable distribution interval allows tradeoff between timeliness and cache Utilization
Admin Interface
- Comprehensive statistics on Cache utilization, updates, and queries
- Text Analysis debugger, showing result of every stage in an analyzer
- Web query interface w/debugging output
- Parsed query output
- Lucene explain () Document score detailing
- Explain score for outgoing side of the requested range to debug why a given document wasn' t ranked higher.