6

約250秒のSolrコアがありますTrieIntField(として宣言されていますdynamicField)。Solrインデックスには約1400万のドキュメントがあり、多くのドキュメントはこれらのフィールドの多くで何らかの価値があります。一定期間にわたって、これらの250のフィールドすべてを並べ替える必要があります。

私たちが直面している問題は、基礎となるLucenefieldCacheがすぐにいっぱいになることです。4 GBのボックスがあり、インデックスサイズは18GBです。これらの動的フィールドの40または45でソートした後、メモリ消費量は約90%になり、OutOfMemoryエラーが発生し始めます。

今のところ、消費されたメモリの合計が80%を超える場合、tomcatを再起動するcronジョブが毎分実行されます。

私が読んだことから、ソート可能なSolrフィールドの個別の値の数を制限すると、fieldCacheスペースが少なくなることを理解しています。これらのソート可能なフィールドの値は、0から33000までの任意の整数であり、非常に広く分散されています。いくつかのスケーリングソリューションを念頭に置いていますが、この問題全体を処理するための最良の方法は何ですか?

更新:ソートする代わりに、ブーストした場合、fieldCacheに移動しないと考えました。したがって、次のようなクエリを発行する代わりに

select?q=name:alba&sort=relevance_11 desc

やってみた

select?q={!boost relevance_11}name:alba

ただし、残念ながら、ブーストするとフィールドキャッシュにもデータが入力されます:(

4

2 に答える 2

2

次の 2 つのオプションがあると思います。

1) メモリを追加します。2)ドキュメントに従って
を指定して、Solr がフィールド キャッシュを使用しないように強制します。facet.method=enum

同じ問題について議論しているsolr-user メーリング リストのスレッドもあります。

インデックスが巨大でない限り、オプション 1 を使用します)。最近のRAMは安いです。

于 2012-11-15T16:16:46.677 に答える