diff --git a/includes/service.inc b/includes/service.inc index aee00c2..6595be0 100644 --- a/includes/service.inc +++ b/includes/service.inc @@ -643,6 +643,7 @@ class SearchApiSolrService extends SearchApiAbstractService { $ret = array( 'search_api_id' => 'item_id', 'search_api_relevance' => 'score', + 'search_api_random' => 'random', ); // Add the names of any fields configured on the index. @@ -851,6 +852,16 @@ class SearchApiSolrService extends SearchApiAbstractService { if (substr($f, 0, 3) == 'ss_') { $f = 'sort_' . substr($f, 3); } + + // SOLR provides a "virtual" query-time-only field named "random_SEED" that + // can be used to sort randomly the results. + if ($field == 'search_api_random') { + $params = $query->getOption('search_api_random', array()); + // Random seed: getting the value from parameters or computing a new ome. + $seed = !empty($params['seed']) ? $params['seed'] : rand(1, 200); + $f = 'random_' . $seed; + } + $order = strtolower($order); $sort[$field] = "$f $order"; }