Hippo CMS - Отображение случайной новостной ленты при каждой перезагрузке страницы

Если у меня есть список, например: List<NewsItems>, и в этом списке 10 новостей, есть ли способ каждый раз получать набор из 4 разных новостей, например, скажем, 1-й, 4-й, 8-й и 10-й элементы в список.

В настоящее время я использую Pageable Collections и разбиваю отображение новостей, чтобы показать 4 новости (максимум) на странице. Таким образом, я могу случайным образом изменить страницу для отображения (таким образом, меняя новости при каждом обновлении), но это не случайно для каждого элемента новостей (например: 1-4 элемента всегда вместе, как и 5-8). ).

final HippoResultSetBean resultSet = featurednewsBean.getResultSet();
  if (resultSet != null && resultSet.getCount() > 0) {

    final HippoDocumentIterator<NewsDocument> facetIt = resultSet.getDocumentIterator(NewsDocument.class);
    final int facetCount = featurednewsBean.getCount().intValue();
    /*
     * @ Javadoc - Show news items(max 4) randomly at every page refresh.
     * FacetCount - No. of news items.
     * pageRandom - A randomly generated number for the current page, so that we display a different page containing news each time.
     */
    int pageRandom = (int) (Math.random() * facetCount);
    //if(pageRandom<(facetCount/4)+1) {
    featurednews = new PageableCollection<NewsDocument>(facetIt, facetCount, DEFAULT_HEADLINES_MAX,pageRandom);

Есть ли способ, которым я все еще могу использовать Pageable Collections и случайным образом получать новостную ленту? ИЛИ как-то иначе? Любая помощь приветствуется.


person Raghav    schedule 19.06.2012    source источник


Ответы (2)


Фасеты Бегемота всегда заказаны. Либо по определяемому вами свойству, либо по оценке (Lucene). PageableCollection дает вам список документов с учетом размера страницы и смещения. Если размер вашей страницы равен 5, а для смещения установлено значение 0, вы получите первые 5 элементов. Использование случайного смещения по-прежнему даст вам набор результатов в том порядке, в котором они вышли из выбора фасетов.

Вы можете сделать его немного более случайным, если немного увеличите размер страницы до 10 элементов и выберите 4 «случайных» из них из featuredNews.getItems() (это java.util.List). Не устанавливайте слишком большой размер страницы, это снизит производительность.

Другой вариант — создать 4 PageableCollection с размером страницы 1 и 4 разными смещениями, если вы хотите выбирать из большего набора результатов.

person Jasha    schedule 19.06.2012

Спасибо за ответ Яша! интеграция с Solr упрощает случайную сортировку.

Что я в итоге сделал (тем временем, работает нормально), так это то, что я взял список новостей, случайным образом отсортировал их и выбрал 4 уникальных из локализованного списка и отобразил их в JSP.

person Raghav    schedule 28.06.2012
comment
Да, интеграция Solr в конечном итоге решит вашу проблему, но на данный момент она еще не выпущена. - person Jasha; 29.06.2012