Hippo CMS - 在每个页面重新加载时显示随机新闻源

时间:2012-06-19 15:35:52

标签: java content-management-system news-feed hippocms

如果我有一个像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并随机获取新闻源?或者其他一些方式?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

Hippo Facets总是有序。您定义的属性或(Lucene)得分。 PageableCollection为您提供给定页面大小和偏移量的文档列表。如果页面大小为5并且您将偏移量设置为0,则会获得前5个项目。使用随机偏移仍然会按照它们从构面选择中的顺序给出结果集。

当您将页面大小增加到10个项目并从featuredNews.getItems()中选择4个“随机”时,您可以使其更加随机(这是java.util.List)。不要将页面大小设置得太高,这会降低性能。

如果您想从更大的结果集中进行选择,另一个选项是创建4个PageableCollection,页面大小为1和4个不同的偏移量。

答案 1 :(得分:0)

谢谢你的回答Jasha! Solr integration使随机排序变得更加容易。

我最终做的事情(同时,工作正常)是,我拿了新闻项列表,随机排序并挑选了4个独特的本地化列表,并将其呈现给JSP。