2016-11-18 5 views
0

コンテンツを照会してnext_url、previous_urlなどとしました。問題は、(Facebookのニュースフィードのように)動的ソートに基づいているという問題です。ダイナミックオーダーのDjangoハンドリングページ分割

以下のシナリオではどうすれば処理できますか?

ユーザリクエストページ1と記事102442を参照してください。ユーザはまだページ2をリクエストしていません。ソートアルゴリズムにより、記事10242はページ2に移動する可能性があります。そうであれば、ユーザーがページ2を要求すると、ユーザーには重複した投稿が表示されます。

アプリ上で重複する投稿を削除することはできません。重複した問題は問題ありませんが、ユーザーリクエストページ1、記事10333がページ2にあり、ユーザーリクエストページ2がある場合は記事10333がページ1に移動するとしましょう。ページ分類が動的ソートをサポートする推奨メカニズムはありますか?

+0

のためにmemcachedをRedisの/のようなNoSQLデータベースか何かのようにあなたがソートアルゴリズムを制御することはありますか? – Aditya

+0

記事を見た人のための新しいモデルを作成することができます。こうしてあなたは.order_by( ' - has_seen')かそれに類似することができます。 –

+0

ページ2のクエリーで.exclude()ページ1の記事を参照することもできます。 –

答えて

0

いくつかの提案は:

  1. 変更アルゴリズムはdirtyパラメータを保持します。誰かが好きなときや変更があったときは、dirtyになり、ソートアルゴリズムを変更してそれを因数分解することができます。私はさまざまなパラメータに基づいて並べ替え順序をカスタマイズできる検索データベース(elasticsearchとalgolia)を使用しました。この変更に伴い、閲覧した内容と表示できる内容のユーザー状態が必要であり、その内容をフィルターとして使用する必要があります。
    Hereは、Facebookのアプローチのいくつかについて議論する素敵な論文です。

    より簡単なアプローチは、ユーザーが閲覧した情報と、ユーザーが情報を取得しようとしたときの情報をフィルタリング/降格することです。ユーザーごとの状態を維持することで、ある人が記事を見たり、別の人が見たりできないような問題が解決されます。
    私は個人的に、このような状態情報

+0

ありがとうございます。あなたの提案を消化させてください。 –

関連する問題