Random sort
Sometimes, you want the results returned from a query to be sorted at random: For example, whenever you want to show at random 10 news items, or, at random 3 banners out of a set of hundreds.
This can be achieved very easily with Solr by using type="random" combined with a dynamicField :
In schema.xml make sure you have:
<dynamicField name="random_*" type="random" />
And in your search code, make sure you add something like:
Sort at random:
@Overridepublic void doBeforeRender(final HstRequest request, final HstResponse response) throws HstComponentException { HippoSolrClient solrClient = HstServices.getComponentManager().getComponent( HippoSolrClient.class.getName(), "org.hippoecm.hst.solr"); HippoQuery hippoQuery = solrClient.createQuery(query); // we map the sort now to <dynamicField name="random_*" type="random" /> // to get a pseudo random search for every new request, we need to map to a // 'random' dynamic sort field : Otherwise the same random sort keeps being // returned as long as the index does not change. We assume 10 random // fields is enough sort = "random_" + new Random().nextInt(10); hippoQuery.getSolrQuery().addSortField(sort, SolrQuery.ORDER.asc); HippoQueryResult result = hippoQuery.execute(); }