2017-06-10 7 views
0

私はソーシャルポータルのビルドのアクティビティフィードのインデックスを作成しようとしています。ポータルでは、ユーザーがお互いにフォローして、フォローしているユーザーからの更新情報を、日付別にソートされたアクティビティフィードとして取得できます。アクティビティストリームまたはニュースフィードのSOLRインデックスを作成する

例えば、ユーザAは、E & F.そこでユーザAは、彼/彼女のアクティビティフィードにB、C、D、E & Fからのすべての記事を参照すべきである、ユーザB、C、D以下であろう。

投稿が2つのフィールドで構成されているとします。 1.投稿のテキスト。 (text_field) 2.それを掲示したユーザーの名前/ UID。 (user_field)

現在、私はすべての投稿のインデックスを作成し、text_field & user_fieldをインデックスに登録しています。規模では、1,000,000以上の投稿があります。ユーザーが1000人でない場合、ユーザーは100人を追跡できます。このシナリオのインデックスを作成する最良の方法は何でしょうか?

  1. フォロワーをインデックスに登録して、すばやく検索してから、すべてのユーザーの投稿を日付別に並べ替えるための2番目のクエリに渡す必要がありますか?
  2. これらすべての投稿で構成されるインデックスを照会する最良の方法は、後続のすべてのユーザーのUIDを渡すことですか?これを考慮すると100年以上になる可能性があります。

更新: ニュースフィードのためのSolrを使用する動機は、主this detailed slideOpenSocialチームと私の簡単な議論に触発されました。

ソーシャルポータルを使い始めたとき、Fan out on writeは過度に高価なようです。しかし、Fan out on readが良いです。スライドとOpenSocialチームはともにFan out on readの検索バックエンドを使用することを提案しました。上記のThe slideには、それがどのように役立ったかに関するデータもあります。

現在、フィードはフラットになり、ソート基準のみが日付(リーセンシー)になります。関連性やより密接なグループからの投稿は考慮しません。

答えて

0

これは抽象的ですが、私はここで最善を尽くします。あなたが言及したことに基づいて、私はSolrが本当にここの仕事のための正しいツールであるかどうかはわかりません。フルテキスト検索のためにSolrを使用することはできますが、このシナリオでは、そこからニュースフィードを生成することについてはわかりません。 Solrはかなり印象的ですが、それは検索エンジンです。私はポストの残りの部分であなたがSolrに固執するふりをしますが、ここで丸い穴に四角いペグを入れようとしています。

ここでは、考慮すべきいくつかの追加の質問があります。

  • あなたはおそらく、あなたが適切に結果をソートする方法を理解する必要があるデータ要素
  • にポストのタイムスタンプを追加することになるでしょう。最近の順番ですか?または、ユーザーがよりやり取りする可能性の高い投稿に基づいていますか?
  • ユーザーが1000以上の接続を持つ場合、メインフィード内のすべてのものから更新を確認したいですか?または、友だちの近くのグループからの投稿が高く表示されますか?ここで

ご質問についていくつかのコメントです:

1)あなたのインデックスの人の信者ならば、追いつくのは難しいかもしれません。私はフォロワーが頻繁に変更されることを想定しており、このシナリオでの再インデックス作成は実際には実用的ではありません。

2)これは、より多くの音にも聞こえるが、再度、ソートを把握する必要があります。あなたはそのユーザーのための接続の一覧を取得し、それらのすべてからトップの投稿の検索を実行することができます。

+0

私はいくつかの詳細で自分の質問を更新しました。フィードは投稿者との関連性や近さを考慮しません。私たちは平らな飼料を日付順に並べます。 'Fan-out on read'というフィードを使うとき、検索バックエンドを使うという提案がありました。私は質問の更新でこれを少し詳細に追加しました。 – esafwan

関連する問題