Solr is an open source NoSQL enterprise search platform built on Apache Lucene. Supporting distributed search and index replication, Solr is highly reliable, scalable and fault tolerant. It runs as a standalone full-text search server with a REST-like API and provides features including hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, and geospatial search. Currently, Solr powers some of the highest-traffic websites and applications in the world.[04][01]
Solr is an open source NoSQL enterprise search platform built on Apache Lucene. Supporting distributed search and index replication, Solr is highly reliable, scalable and fault tolerant. It runs as a standalone full-text search server with a REST-like API and provides features including hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, and geospatial search. Currently, Solr powers some of the highest-traffic websites and applications in the world.[04][01]
History[05]
In 2004, CNET Networks, an American media website, started Solr to support search capability and later donated to Apache Software Foundation as a open-source project in 2006. In 2007, graduated as a top-level project (TLP), Solr grew steadily with more features and supported several popular websites. Finally in 2010, Solr was merged with Lucene as a sub project and changed the version number to 3.1 after Solr 1.4 to match that of Lucene.
Checkpoints[06][07][08]
For standalone mode, Solr provides support for checkpoints through replication handler and will back up the system from the latest index commit point. Checkpoints can be triggered manually or users can set customized configurations to back up automatically after each commit or startup. For SolrCloud mode, Solr utilizes the Collection API which will back up the indexes and configurations to a shared filesystem. The checkpoints will be taken across multiple shards. When restoring, a new collection with same number of shards will be created and will preserve all the shard structure like routing information.
Concurrency Control[09]
Solr uses Optimistic Concurrency Control to ensure that documents can not be concurrently modified by multiple client applications. All documents will be assigned a version field. When updating, clients are guaranteed to read the latest version and resubmit the document after local modification. When a version conflict is encountered, the transaction should be redone.
Data Model[10][11]
Solr stores data as documents which consist of different fields. Each field contains a piece of more specific information about the document and can have different data types. Using the index of documents, Solr can provide efficient search.
Foreign Keys[12][13]
Solr supports foreign keys to indicate relationships between documents as "join", which is different from that of relational database. Join in Solr will not truly join the documents and only generate information from one document, which is more similar to nested query. There is no support for foreign key constraints in Solr. Programmer needs to specify the from and to fields to explicitly join two documents with the join QueryParser.
Citations
13 sources- Welcome to Apache Solr - Apache Solr apache.org
- GitHub - apache/lucene-solr: Apache Lucene and Solr open-source search software · GitHub github.com
- Apache Solr 7.3.0 Documentation apache.org
- Apache Solr - Wikipedia wikipedia.org
- Apache Solr - Wikipedia wikipedia.org
- Making and Restoring Backups | Apache Solr Reference Guide 7.3 apache.org
- Index Replication | Apache Solr Reference Guide 7.3 apache.org
- Collections API | Apache Solr Reference Guide 7.3 apache.org
- Updating Parts of Documents | Apache Solr Reference Guide 7.3 apache.org
- http://www.solrtutorial.com/basic-solr-concepts.html solrtutorial.com
- Overview of Documents, Fields, and Schema Design | Apache Solr Reference Guide 7.3 apache.org
- https://wiki.apache.org/solr/Join apache.org
- Other Parsers | Apache Solr Reference Guide 7.3 apache.org