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