0

全文検索のために、solr で約 1,000 万のドキュメントをインデックス化する必要があります。これらの各ドキュメントには、約 25 の追加のメタデータ フィールドが添付されています。個々のメタデータ フィールドは小さい (最大 64 文字)。一般的なクエリには、データのフィルタリングに使用される複数のメタデータ フィールドと共に検索語が含まれます。だから私の質問は、検索応答時間に関してより良いパフォーマンスを提供するものはどれかということです。(インデックス作成時間は問題ではありません):

を。テキスト データにインデックスを付け、すべてのメタデータ フィールドを格納されたフィールドとして solr にプッシュし、単一のクエリを使用してすべてのフィールドに対して solr をクエリします。(効果的に、solr は検索だけでなくメタデータを使用したフィルタリングも行います)

b. メタデータ フィールドを Mysql のようなデータベースに保存します。全文のみに solr を使用し、solr から返されたドキュメント ID をデータベースへの入力として使用して、他のメタデータに基づいてフィルタリングし、ドキュメントの最終セットを取得します。

ありがとうアリジット

4

2 に答える 2

2

間違いなく a)。Solr は単なる全文検索エンジンではなく、それ以上のものです。そのフィルター クエリは、少なくとも MySQL の選択と同じくらい高速です。

b)はばかげています。正しいメタデータを持つものを選択して MySQL から多くの ID をフェッチし、その ID リストに対してフィルタリングしながら Solr で全文検索を実行し、MySQL または Solr からドキュメントをフェッチします (インデックスだけでなくデータを保存することを選択した場合)。これがより高速になるケースは想像できません。

于 2012-08-11T15:51:21.113 に答える
0

特にインデックス作成時間と HD スペースが問題にならない場合は、すべてのデータ (つまり、ユーザーが必要とするサブセット) を Solr に保存する必要があります。

例外は、各ドキュメントに保存 (および取得) するテキストが大量にある場合です。そのような場合は、検索結果が返ってきた後に RDB から取得する方が高速です。とにかく、あなたのケースではどちらが速いかは誰にもわかりません。そのため、両方のアプローチのパフォーマンスをテストすることをお勧めします (たとえば、JMeter を使用します)。

また、インデックス時間は気にしないので、可能な処理はすべてクエリ時間ではなくインデックス時間に行う必要があります (例: シノニム、ブーストを置き換えることができるペイロードなど)。

Solr のパフォーマンスに関する追加情報については、こちらを参照してください。

http://wiki.apache.org/solr/SolrPerformanceFactors

于 2012-08-11T22:20:28.593 に答える