2011-11-16 14 views
5

私は文書とSolrのインデックスのようなものフィールドがあります。頻繁な更新 - 効率性/拡張性の懸念

私のアプリケーションで
id, body_text, date, num_upvotes, num_downvotes 

を、文書はいくつかの整数idといくつかのbody_text(500文字、最大で作成されます)。日付は入力時に設定され、num_upvotesnum_downvotesは0から始まります。

私のアプリケーションでは、上記のコンテンツをupvoteとdownvoteすることができます。なぜなら、私はこれをSolrで追跡したいのです私はにupvotesとdownvotesの数を考えることができるようにしたいだけです。

これは、solrドキュメント(up_votesの番号を増やす)を単純に更新することはできず、ドキュメント全体を置き換える必要があるため問題になります。これは、DBを使用してすべての関連ドキュメントデータを再度表示します。

解決策には、データのレイアウトや、複数のインデックスが必要な場合があります(ただし、solrコア間でクエリ/スコアリングできるかどうかはわかりませんが)。

誰もこれに対処する方法についての推奨事項はありますか?

+0

私は次のような質問をしました:http://stackoverflow.com/questions/8411860/can-solr-boost-results-on-number-of-social-likes – aitchnyu

答えて

4

同様の問題で使用する解決策は、データベース内のその情報を更新し、最後の更新以降に変更されたドキュメントを使用して10分ごとにSOLR Updates/Insertを実行することです。

また、毎晩、トラフィックが少なくてもインデックスを最適化します。 各インポート後、私はSOLR設定でウォームアップクエリを設定しました。

私のSOLRインデックスには、約1.5百万のドキュメントがあり、各ドキュメントは24フィールド、ドキュメント全体で約2000文字です。 索引を最適化せずに約500分の文書を10分ごとに更新します。ほとんどの一般的なファセット、最もよく使用されるフィルター照会、およびフリー・テキスト検索からなる約50回のウォーム・アップ照会を行います。

パフォーマンスに悪影響はありません。 (少なくとも表示されません) - 私のクエリは0.1秒で平均を実行します。 (10分ごとに更新を行う前に、平均クエリは0でした)。私はこのアップデート中に問題が発生しませんでした

:09秒)

LATER EDIT。私はいつもデータベースから文書を取り込み、SOLRに一意のキーを挿入します。ドキュメントがSOLRに存在する場合、それは置き換えられます(これは私が更新を意味するものです)。

SOLRの更新に3分以上かかることはありません。実際には、各アップデートの後に10分間休憩しています。だから私はインデックスの更新を開始し、それが完了するのを待ってから、もう一度10分お待ちします。

夜間のパフォーマンスは見ていませんでしたが、ピーク時にユーザーが訪れたときに新鮮な情報を知りたいので、私にとっては関係ありません。

+0

情報をありがとう。私は実際にその間隔更新のアプローチをやっていると思っていましたが、その10分間の更新が行われている間に競合の問題があると認識していますか? (つまり、それらの文書が索引の「外」にある場合、実行されている問合せは実行されていませんか?) - 好奇心が強い、索引最適化は実行するとどれくらいの時間がかかりますか?あなたはこの夜間のパフォーマンスの向上が、自明ではないことを発見しましたか? – csjohn

+0

私の更新を見てください:) – Dorin

+0

私はこのような答えを長い間探してきました – aitchnyu

1

アップ/ダウン投票のみを更新している場合は、データベースに戻る代わりに、アプリケーションに適切なSolr Clientを使用して、索引から文書を引き出し、必要に応じて上/下の値を設定してから、文書を索引に戻し直してください。

+0

問題は解決されました。フィールドは 'stored = false'を指定して、特にスケール時の膨れを防ぎます。だから私がbody_textを格納していないなら、私はそれをSolrから引き出して再挿入できません。 – csjohn

2

Joinの機能がここに役立ちます。次に、上下の票を別々の文書に保存することができます。

トランクビルドで快適に走っていない限り、Solr 4まで待つ必要があります。

+0

チップをありがとう。 Solr 4のトランクはどれくらい安定しているのでしょうか? (またはSolr 4のリリース時の考え方) – csjohn

+0

私は数日前に同じことを思っていました。私のGoogle検索で覚えていることから、Solr 4をプロダクションで使っている人もいます。オープンソースプロジェクトの公開日を特定するのは本当に難しいですが、誰かが8ヶ月間推測しているのを覚えています。ここで開いている問題は、https://issues.apache.org/jira/browse/SOLR/fixforversion/12314992#atl_token=A5KQ-2QAV-T4JA-FDED%7C998a6b54a3f89920a488573221c1192d2e78926c%7Clout&selectedTab=com.atlassian.jiraです。 plugin.system.project%3Aversion-issues-panel – brian519

0

SOLR内で問題を解決する方法はありません。データベースに問題があり、検索エンジンで解決しようとしています。

これに対処する最善の方法は、document idとSOLRとアップ/ダウン投票数を記録するredisデータベースを維持することです。次に、表示する前に両方のソースのデータをマージすることができます。