2016-04-26 18 views
0

私たちは、最初の次元がコレクションであり、2番目がシャードである2次元ソルラークラウドクラスターを実装しようとしています。コレクションは、文書のプロパティに基づいて、ランタイムで決定する必要があります。Spring Data Solr 2.0.1でSolr Cloudコレクションを動的に指定する方法は?

私はこの機能がsolrj-CloudSolrClientによってサポートされていることがわかります。add(String collection, SolrInputDocument doc)のようなコレクション名を受け入れる適切な方法があるので、@Bean CloudSolrClient("zookeeper.host")を登録しました。しかし、明らかに、Spring Data Solrによって使用されるSolrTemplateのメソッドはコレクション名を受け入れないため、十分ではありません。 SolrTemplateので

私はSolrTemplateとCloudSolrClient#add(String collection, SolrInputDocument doc)CloudSolrClient#add(String collection, Collection<SolrInputDocument> docs)に委任オーバーライドsaveBeansaveBeans方法を拡張するこの問題を回避しようとしたフードの下SolrClientを使用します。それは私が質問のために同じことをする必要があるまでうまくいった。 SolrTemplate#executeSolrQueryはpackage-privateで最終的なので、私はそれを上書きすることはできません。そしてここで私は立ち往生した!

私の質問を要約すると:ランタイムに春のデータのSolrでコレクション名を指定する方法はありますか?

私は非常に助けていただければ幸いです!

よろしく、 たEugeny

答えて

0

クラスをモデル化するために(solrCoreName =「core_to_which_model_class_belong」)私の問題は少し違っていたが、私はクエリでも、コレクション名に問題があったし、私の場合には@SolrDocumentを追加するには、問題を解決しました。

+0

しかし、残念ながら、それは動的に見えません。あらかじめ定義されたコレクションではなく、さまざまなコレクションにドキュメントを格納できるようにする必要がありました。 – Eugeny

+0

私はsolrjとspring-data-solrのコードを少しデバッグしていましたが、異なったsolrクライアントには異なるアプローチがあります。例えば、次のコードスニペットを見てください。 'if(collection == null)' 'collection =(reqParams!= null)? reqParams.get( "collection"、getDefaultCollection()):getDefaultCollection(); ' これはCloudSolrClientからのものです。あなたが選択されたコレクションに対してあなたの呼び出しを実行するようにクライアントに指示するための要求パラメータを提供する必要があるようです。しかし、私は、バネデータソルバでリクエストを渡すためのメソッドを見ることができません。それはsolrj内で作成されました –

+0

はい、ありがとう!私もこのコードを見てきました。私はsolrjを使ってクエリを実装しました。 – Eugeny

関連する問題