Solr search engine integration for Plone
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
config Schema: make default type text (from string). Sep 24, 2018
docs Use /solr/plone basePath instead of /solr in all tests. Sep 23, 2018
etc Add language specific Solr configuration with custom German configura… Aug 26, 2013
src/collective Skip unstable testBatchedSearchResults test. Oct 25, 2018
.coveragerc exclude backported search from coverage Sep 24, 2016
.gitattributes Change everything I complained about in the original PR Feb 19, 2015
.gitignore Update .gitignore. Mar 7, 2018
.travis.yml Upgrade chromedriver to 2.44. Dec 6, 2018
CHANGES.rst Next version will be 7.0.0a1. Sep 20, 2018 Fix Dec 11, 2015
Makefile Add Makefile. Sep 20, 2018
README.rst Semantic breaklines Oct 26, 2018
SOLR-7.rst Remove optimizations to reduce clutter in the PR. Sep 23, 2018
base.cfg Fix testSortIndexCleanup test failure. Sep 23, 2018
better-defaults.diff add todo-diff for better defaults - it's currently too hard to integr… Jul 10, 2011 Clean up buildout structure. Jun 25, 2015
buildout-german.cfg Add language specific Solr configuration with custom German configura… Aug 26, 2013
buildout.cfg Use Plone 5.1.4 by default. Dec 5, 2018
plone-4.3.x.cfg Add Plone 5.1. Jan 23, 2018
plone-5.0.x.cfg Upgrade Plone 5.0.6 -> 5.0.8. Jan 23, 2018
plone-5.1.x.cfg Use Plone 5.1.4 by default. Dec 5, 2018
plone-5.2.x.cfg Add plone-5.2.x.cfg. Dec 5, 2018
requirements.txt Merge branch 'master' into 5.1-solr-7 Sep 20, 2018 Next version will be 7.0.0a1. Sep 20, 2018
solr-3.6.x.cfg don't specify a default solr version in the common buildout configura… Aug 27, 2013
solr-4.10.x.cfg Clean up buildout structure. Jun 25, 2015
solr-4.3.x.cfg Clean up buildout structure. Jun 25, 2015
solr-4.4.x-german.cfg Comment out StemmerOverride since this seems to cause problems. Sep 16, 2013
solr-4.4.x.cfg Use solr.SearchHandler instead of solr.SpellCheckComponent since the … Oct 29, 2013
solr-5.0.x.cfg Added compatibility note: don't use Solr 5. Nov 15, 2016
solr-5.1.x.cfg Added compatibility note: don't use Solr 5. Nov 15, 2016
solr-5.2.x.cfg Added compatibility note: don't use Solr 5. Nov 15, 2016
solr.cfg solr.cfg: configure JMX host and port separately. Nov 18, 2016
tox.ini use `tox` to run tests against various solr versions Aug 27, 2013
travis.cfg Clean up buildout structure. Jun 25, 2015
versions.cfg Merge branch 'master' into 5.1-solr-7 Sep 20, 2018


collective.solr - Solr integration for the Plone CMS Latest Version Egg Status License

collective.solr integrates the Solr search engine with Plone.

Apache Solr is based on Lucene and is the enterprise open source search engine. It powers the search of sites like Twitter, the Apple and iTunes Stores, Wikipedia, Netflix and many more.

Solr does not only scale to any level of content, but provides rich search functionality, like faceting, geospatial search, suggestions, spelling corrections, indexing of binary formats and a whole variety of powerful tools to configure custom search solutions. It has integrated clustering and load-balancing to provide a high level of robustness.

collective.solr comes with a default configuration and setup of Solr that makes it extremely easy to get started, yet provides a vastly superior search quality compared to Plone's integrated text search based on ZCTextIndex.


Solr Features

  • Schema and Schemaless Configuration
  • Information Retrieval System
  • Speed (in comparission to ZCTextIndex)

Features of Solr Integration into Plone

Search Enhancements

  • Facets
  • Indexing of binary documents
  • Spellchecking / suggestions
  • Wildcard searches
  • Exclude from search
  • Elevation

Detailed Documentation

A full Documentation of the Solr integration of Plone could be found on

Installation & Configuration

Download the latest default Solr configuration from github:

$ wget
$ wget

Extend your buildout to use those files and make sure collective.solr is added to the eggs in your instance section. Your full buildout file should look something like this:

parts += instance
extends =

recipe = plone.recipe.zope2instance
http-address = 8080
user = admin:admin
eggs =

collective.recipe.solrinstance = 5.3.2

After saving this to let's say buildout.cfg, the buildout can be run and the Solr server and Plone instance started:

$ python
$ bin/buildout
$ bin/solr-instance start
$ bin/instance start

Next you should activate the collective.solr (site search) add-on in the add-on control panel of Plone. After activation you should review the settings in the new Solr Settings control panel. To index all your content in Solr you can call the provided maintenance view:


Solr connection configuration in ZCML

The connections settings for Solr can be configured in ZCML and thus in buildout. This makes it easier when copying databases between multiple Zope instances with different Solr servers.


zcml-additional =
    <configure xmlns:solr="">
        <solr:connection host="localhost" port="8983" base="/solr/plone"/>

Current Project Status

The code is used in production in many sites and considered stable. This add-on can be installed in a Plone 4.1 (or later) site to enable indexing operations as well as searching (site and live search) using Solr. Doing so will not only significantly improve search quality and performance - especially for a large number of indexed objects, but also reduce the memory footprint of your Plone instance by allowing you to remove the SearchableText, Description and Title indexes from the catalog as well as the lexicons if no other indexes are using them.

In large sites with 100000 content objects and more, searches using ZCTextIndex often taken 10 seconds or more and require a good deal of memory from ZODB caches. Solr will typically answer these requests in 10ms to 50ms at which point network latency and the rendering speed of Plone's page templates are a more dominant factor.

Solr Compatibility

The code works with Solr 3 or 4. Solr 5 is not yet supported. See Recommended is the latest in the Solr 4 series, currently 4.10.4.

Bug Reporting & Development

Releases can be found on the Python Package Index at The code and issue trackers can be found on GitHub at

For outstanding issues and features remaining to be implemented please see the issue tracker.