The S-Files: Adding a custom sort to Acquia Search (Apache Solr)

Robert Douglass's picture

Tech Support Case Studies

We've received several inquiries about adding custom sorts to the the sorting block on search results for our popular Acquia Search product. This is fortunately quite easy, though it currently involves preparing a custom module that implements one hook:
hook_apachesolr_prepare_query(&$query)

<?php
  
function hook_apachesolr_prepare_query(&$query) {
    
// You can get the 'solr_field_name' from q=admin/reports/apachesolr
    
$query->set_available_sort('solr_field_name', array(
      
// how the sort link is to appear in the sorts block
      
'title' => t('Name of sort'),
      
'default' => 'asc', // or 'desc'
     
));
   }
?>

Not all fields can be sorted on. According to the Solr Wiki:

Sorting can be done on the "score" of the document, or on any
multiValued="false" indexed="true" field provided that field is either
non-tokenized (ie: has no Analyzer) or uses an Analyzer that only
produces a single Term (ie: uses the KeywordTokenizer)

Maybe we'll see the appearance of a contributed module that lets people define their own custom sorts. Acquia partner Krimson was working on such a module but I haven't seen it appear on Drupal.org.

Comments

The module is now available

Posted on January 11, 2010 - 3:27pm by Stijn Vanden Brande.

The module is now available on the krimson website. And we started the request for a CVS account.

Related Content

AcquiaBlog