0

私はpostgresqlデータベースを持っています。インデックスを作成する必要があるテーブルには、約2,000万行あります。1回の試行でそれらすべてにインデックスを付けたい場合( "select * from table_name"など)、JVMにより多くのメモリを割り当てたとしても、JavaOutOfMemoryエラーが発生します。

SOLRに、テーブルを部分的にインデックス付けするオプションはありますか(たとえば、最初の1000000行に対してSQLを実行し、次にインデックスを作成してから、2番目の100万行に対してSQLを実行します)。

今私はLIMITでSQLクエリを使用しています。しかし、solrがインデックスを作成するたびに、手動で再起動する必要があります。

更新:わかりました、1.4は現在リリースされています。OutOfMemory例外はないようですが、ApacheはDIHで非常に大きな作業を行っていたようです。また、リクエストを介してパラメータを渡し、SQL選択で使用できるようになりました。わお!

4

3 に答える 3

1

ここで「カーソル」についてのビットを参照してください。これは役立つかもしれません。

http://jdbc.postgresql.org/documentation/83/query.html

于 2009-10-29T20:21:12.817 に答える
0

autoCommit、batchSize が設定されていますか? もしそうなら、それはこのバグかもしれません。trunkにアップデートしてみてください。

于 2009-10-28T15:56:16.797 に答える
0

SolrJ をクライアントとして使用する方法を検討しましたか? DIH は優れていますが、Solr とデータベース間の密結合は、データの操作と問題の回避が困難になる可能性があることを意味します。

SolrJ クライアントを使用すると、データベースを制御するバッチで反復処理を行い、ターンアラウンドしてから Solr に直接ダンプすることができます。また、XML の代わりに SolrJ の新しいバイナリ Java ストリーム形式を使用すると、2,000 万行のインデックス作成がかなり迅速に行われます。

このような問題が発生するまでは、DIH は優れています。

于 2009-10-29T15:42:48.973 に答える