Solr: An Alternative to Drupal Search, Now with Group Filtering


3 min read

David Goode is a new addition to Development Seed and to the Drupal community. He’ll be working with us this summer until he goes off to college in the fall. I think we’ll be able to make him a full Drupal convert by then : )

One module that has frequently been put forward as a candidate for improvement in Drupal is the search module. Two reasons for this are its ranking system, which can be less than ideal, and its tendency to bog sites down and slow load times since it indexes and searches on the same SQL database that the site uses for all other operations. However, there is another option that’s available to Drupal users: Solr. Running on its own Java daemon, Solr is a well-established, fast, and powerful indexing and search implementation accessed over HTTP. What it isn’t is fully integrated with Drupal — yet.

There is a module — apachesolr — that’s being actively developed that presently supports using Solr for searching Drupal sites. However, because Solr’s search is independent of the usual SQL queries used by Drupal — and immune to the performance ramifications therein — the module doesn’t currently support the node access permissions system, and therefore returns blurbs of what could be restricted content. This extends to organic groups, where all content is returned in the search results even if the user is not a member of the associated group.

Happily, we have just finished a module that implements basic group access privileges for Drupal search with Solr. Running as a secure filtering layer between the apachesolr module and the user, it instructs Solr to index and internally filter its returns by group. Users can either receive results from a single group to which they are subscribed, which is useful for specific searching within a larger site, or view returns from all their subscribed groups as well as non-grouped content.

Although the module does not support node-by-node access controls and errs on the side of security with public/private group nodes, this fundamental group filtering implementation is what’s needed on many of our current projects — many of which are community portals with private and public space. We think other Drupal administrators will find it useful as well, so we’ve submitted it for inclusion in future distributions of apachesolr. For further information or to download our apachesolr_og module, please visit the apachesolr issue queue on

If you’re interested in where Drupal + Solr integration is going, keep an eye on this year’s Google Summer of Code project: Improving the Apache Solr Search Integration module.

What we're doing.