質問

solr ドキュメントに対する個々のユーザーの評価を提示する戦略を探しています。つまり。ユーザーはドキュメントに 1 ~ 5 の評価を付けることができ、検索時にその評価をユーザーに返したいと考えています。

一般的なアプローチは 2 つ考えられます。

  1. 評価を RDBMS に保存し、solr 結果を取得した後にクエリを実行し、データをビジネス ロジックにマージします。

  2. 何らかの方法でこの評価情報も solr に保存し、特定のユーザーのデータが返されるようにします。私が考えることができるのは、ユーザー ID と評価の値を含む属性名だけです。

ユーザーベースが大きいと仮定すると、アプローチ 2 は手に負えなくなるのではないかと心配です。solr ドキュメントはどの程度まで「広範囲」に対応できますか?ドキュメントに何万もの属性を設定できますか?パフォーマンスへの影響は、SQL DB (アプローチ 1) での 2 回目のヒットよりもアプローチ 2 の方が優れていますか?

私が考えていない他のアプローチはありますか?

役に立ちましたか?

解決

私は評価の数は、ユーザごとの低い(おそらく1000未満)であるので、私はちょうどメモリにログインして保存すると、すべての彼らの評価をキャッシュ使用されるアプローチ番号1をしました。 SOLR結果を示すときに、それだけで必要な評価を適用することは非常に速いです。

これは、各結果のデータベース呼び出しを持っていることからあなたを節約し、あまりにも多くのサーバーを行き詰まらしません。ユーザーが自分の評価を更新したときにプラス、あなただけのDBを更新し、キャッシュを無効にします。あなたはSOLR文書へのUPDATE呼び出しを行う必要はありません。

他のヒント

第三の選択肢は、単に文書ID、ユーザIDとユーザによってその文書にaattributedスコアが含まれている追加のSolrのインデックスを追加するかもしれません。ドキュメント&ユーザーがスコアを照会することは非常に簡単かつ迅速になります。

私は数2で行く、そして唯一の定期的評価を更新します。あなたはSolrので算出した関連性スコアに評価に溶け込むことができますこの方法。

私はそれはあなたが大幅に影響を投票上下が/何を示している、またはそれは、文書がどのように新しいのように、スコアリングにちょうど別の要因だ場合のDigg / Redditの、ようにしている場合に依存だと思います。それだけでもう一つの要因だ場合は、週に1日1回、あなたのドキュメントを更新するか、月に一度の静かな時間....

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top