私たちは、最初の次元がコレクションであり、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)
に委任オーバーライドsaveBean
とsaveBeans
方法を拡張するこの問題を回避しようとしたフードの下SolrClient
を使用します。それは私が質問のために同じことをする必要があるまでうまくいった。 SolrTemplate#executeSolrQuery
はpackage-privateで最終的なので、私はそれを上書きすることはできません。そしてここで私は立ち往生した!
私の質問を要約すると:ランタイムに春のデータのSolrでコレクション名を指定する方法はありますか?
私は非常に助けていただければ幸いです!
よろしく、 たEugeny
しかし、残念ながら、それは動的に見えません。あらかじめ定義されたコレクションではなく、さまざまなコレクションにドキュメントを格納できるようにする必要がありました。 – Eugeny
私はsolrjとspring-data-solrのコードを少しデバッグしていましたが、異なったsolrクライアントには異なるアプローチがあります。例えば、次のコードスニペットを見てください。 'if(collection == null)' 'collection =(reqParams!= null)? reqParams.get( "collection"、getDefaultCollection()):getDefaultCollection(); ' これはCloudSolrClientからのものです。あなたが選択されたコレクションに対してあなたの呼び出しを実行するようにクライアントに指示するための要求パラメータを提供する必要があるようです。しかし、私は、バネデータソルバでリクエストを渡すためのメソッドを見ることができません。それはsolrj内で作成されました –
はい、ありがとう!私もこのコードを見てきました。私はsolrjを使ってクエリを実装しました。 – Eugeny