3

如果我有一个类似 : 的列表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 并随机获取新闻提要?或者其他方式?任何帮助是极大的赞赏。

4

2 回答 2

2

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

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

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

于 2012-06-19T16:15:35.533 回答
0

谢谢你的回答亚莎!Solr 集成使随机排序变得更加容易。

我最终做的(同时,工作正常)是,我获取新闻项目列表,随机排序它们并选择 4 个唯一的本地化列表,并将其呈现给 JSP。

于 2012-06-28T16:47:07.213 回答