3

: のようなリストList<NewsItems>があり、このリストに 10 個のニュース項目がある場合、毎回 4 つの異なるニュース項目のセットを取得する方法はありますか?たとえば、リスト。

私は現在 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 項目が取得されます。ランダムなオフセットを使用しても、ファセット選択から出てきた順序で結果セットが得られます。

ページサイズを少し増やして 10 アイテムにし、そのうちの 4 つの「ランダム」を選択すると、もう少しランダムにすることができますfeaturedNews.getItems()(これは ですjava.util.List)。ページ サイズを大きくしすぎないようにしてください。パフォーマンスが低下します。

より大きな結果セットから選択する場合は、別のオプションとしてPageableCollection、1 のページ サイズと 4 つの異なるオフセットで 4 を作成することもできます。

于 2012-06-19T16:15:35.533 に答える
0

ご回答ありがとうございます。Solr の統合により、ランダムな並べ替えがはるかに簡単になります。

私がやったこと(その間、うまくいきました)は、ニュースアイテムのリストを取り、それらをランダムにソートし、ローカライズされたリストから4つのユニークなものを選び、それをJSPにレンダリングしました。

于 2012-06-28T16:47:07.213 に答える