6

私は Solr の完全な初心者なので、ご容赦ください。:)

私の現在のプロジェクトでは、ID、名前、件名、メッセージの 4 つのフィールドを含む 1 つのテーブルだけという非常に単純な DB があります。

私が理解している方法では、新しいレコードが追加 (または削除) されるたびに、そのレコードをインデックスに追加する必要があります。基本的には、レコードを DB に挿入し、インデックスに追加するという 2 つの操作を実行します。

これは標準的な手順ですか、それとも、ある間隔で、または更新があるたびに DB テーブルを自動的に再インデックス化するように Solr に指示する方法はありますか?

また、テーブルが非常に単純なため、この情報を DB に格納することは理にかなっていますか? レコードを名前、件名、メッセージで検索できるようにしたいのに、Solr インデックスに保存しないのはなぜですか?

私のセットアップは、Java、Hibernate、MySQL、および Solrj です。

4

2 に答える 2

5

データベースを使用するかどうかは、実際には、このデータをどれだけの期間保持して成長させたいかということになります。データベース全体を破損するよりも、Solr インデックス全体を破損する (そしてすべてのデータを失う) 方がはるかに簡単です。また、Solr は、新しいインデックスから開始せずにスキーマを変更するための優れたサポートを提供していません。たとえば、別のフィールドを追加することはできますが、インデックスを消去せずにフィールドの名前やタイプを変更することはできません。

DB を使用する場合は、Solr をセットアップして、 DataImportHandlerを使用して DB から直接インデックスを作成できます。スキーマの場合、これは非常に簡単なはずですが、DB が複雑になるにつれて、これはすぐに苦痛になる可能性があります。すでにセットアップ済みの Hibernate オブジェクトを使用し、Solrj を使用してそれらを挿入するだけで、いくつかの利点があると思います。DataImportHandler のもう 1 つの問題点は、http を使用して完全に制御されることです。wgetしたがって、またはを使用してスケジューリングを処理するには、個別の cron ジョブ (またはその他のコード) を管理する必要がありますcurl

于 2011-04-18T16:59:00.127 に答える
-1

DB が有用であると考える唯一の理由は、トランザクションのサポートが優れていることです。とにかく、lucene (SOLR の基礎となるエンジン) は 1 つのインデックスライターしか許可できないため、同時変更によって基礎となるレコードを簡単に台無しにすることはできません。

私に関する限り、DB は必要ありません。SOLR は、必要なすべてを処理します。

于 2011-04-13T14:43:05.503 に答える