I've been trying to get this figured out for a couple days now, and I feel like I'm close, but as of yet no cigar. I need to make the apache solr search on the site I'm working on to have two sorts, 'created' and 'score'. The default search sort is score, but I need to change it to created.
I've got as far as changing the default itself, but then change is added unconditionally, so obviously it will always occur over score. Do I have to rebuild all the URLs to use arg, or is there an easier way? Here's my code:
Note: there's some code to remove some filters, but that's not related to the problem. I included them just in case.
function myhook_apachesolr_prepare_query(&$query, &$params) {
// Remove sorts
$query->remove_available_sort('type');
$query->remove_available_sort('sort_title');
$query->remove_available_sort('sort_name');
// Rename/Reorder sorts
$query->remove_available_sort('created');
$query->remove_available_sort('score');
$query->set_available_sort('created', array('title' => t('Most Recent'), 'default' => 'desc'));
$query->set_available_sort('score', array('title' => t('Most Relevant'), 'default' => 'asc'));
// Change the default sort to by date
$query->set_solrsort('created', 'desc');
}