2012-06-19 45 views
3

如果我有這樣的列表:List<NewsItems>,並有在此列表中10個新聞項目,有一些方法可以讓我得到了一組,每次4個不同的新聞,比如說,列表中的第1,第4,第8和第10項。河馬CMS - 顯示隨機新聞源在每個頁面重新加載

我目前使用可分頁集合和分手的新聞條目顯示每頁顯示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並隨機獲取新聞Feed?或者其他方式?任何幫助是極大的讚賞。

回答

2

河馬小面總是囑咐。在您定義的屬性或(Lucene)得分上。 A PageableCollection爲您提供了頁面大小和偏移量的文檔列表。如果您的頁面大小爲5,並將偏移量設置爲0,則會得到前5個項目。使用隨機偏移量仍然會按照它們從方面選擇出來的順序給出結果集。

當您將頁面大小增加到10個項目並從featuredNews.getItems()(這是一個java.util.List)中挑選4個「隨機」時,您可以使它更隨機一些。不要將頁面尺寸設置得太高,這會降低性能。

另一種選擇是創建4 PageableCollection的頁面大小爲1和4個不同的偏移量,如果您想從較大的結果集中進行選擇。

0

謝謝您的回答Jasha! Solr integration使隨機排序更容易。

最後我做什麼(在此期間,正常工作)是,我把新聞項目的列表,隨機排序它們撿起4個獨特的本地化名單,並呈現給JSP。

+0

是Solr的整合將最終解決您的問題,但目前它尚未發佈的版本。 – Jasha