問題タブ [spring-data-solr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring Data Solr で大きなクエリに POST メソッドを使用する
プロジェクトで Spring Data Solr を使用しています。場合によっては、Solr に対して生成されたクエリが大きすぎて (例: 15Kb+)、Solr 例外が発生します。このソリューション: http://codingtricks.fidibuy.com/participant/join/54fce329b760506d5d9e7db3/Spring-Data-Solr-cannot-handle-long-queries は、一部のクエリでまだ失敗します。これらのクエリを POST 経由で Solr に直接送信しても問題ないため、この方向で作業することにしました。Spring Data Solr で、クエリの優先メソッド (GET/POST) を構成する方法を見つけることができませんでした。したがって、次の解決策にたどり着きました: SolrServer を拡張しました。
(いくつかの詳細はスキップされます。setCore() と isBigQuery() も簡単でスキップされます)、SolrConfiguration.class で SolrServer Bean として使用します。
これは正常に機能しますが、いくつかの欠点があります。multiCoreSupport を false に設定する必要がありました。これは、Spring Data Solr がインターフェースからリポジトリを実装するときに、multiCoreSupport を使用して MultiCoreSolrServerFactory を使用し、コアごとにサーバーを格納しようとするためです。これは、サーバーを保持マップに複製することによって行われます。SolrServerUtils はそれを clone() する方法を知らないため、当然、カスタマイズされた SolrServer でクラッシュします。また、Spring Data がエンティティ クラスの @SolrDocument アノテーションのパラメーターからコアを抽出するのを楽しむのではなく、コアを手動で設定する必要があります。
ここに質問があります 1) 主な一般的な質問: Spring Data Solr で長すぎるクエリの問題を解決する (または、より具体的には、GET の代わりに POST を使用する) 合理的な方法はありますか? 2) マイナーなもの: Spring Data Solr で SolrServer をカスタマイズしながら multiCoreSupport を維持する合理的な方法はありますか?
solr - Solr - 親子ドキュメント
親と子のドキュメントをsolrに保存する必要があり、親と子の両方のレコードにフィルターを適用し、親と子の両方のドキュメントを応答で単一のレコードとして返す機能が必要です。これがsolrを使用して達成できるかどうかは誰にもわかりませんか?
spring - 複数のコアのリポジトリを使用して Spring Data Solr を構成する方法
マルチコアをサポートするリポジトリを使用して solr で春のデータをセットアップするための詳細で完全な説明はありますか?
solr - Criteria API を使用して未加工のクエリ パラメータを追加する
これに対する答えが見つかりませんでした。以前の同様の質問が未回答であることがわかりました。クエリに Spring データ solr を使用したいと考えています。しかし@Query
、私のニーズには不十分です。私が理解したように、ここで指定したものはすべてq
、solr の「選択」ハンドラーへのパラメーターになります。
私の場合、たとえばsfield
空間検索用にさらにパラメーターを追加する必要があります。@Query
それをカットしない場合は、自動配線によってカスタムリポジトリ実装を作成する準備ができていますがSolrTemplate
、Criteria
API では生のクエリパラメーターを追加できないようです。
ヘルプ/ポイントは大歓迎です。
java - Tomcat がシャットダウン時にハングする
実装が必要ないくつかの管理ユースケースのために、プロジェクト内で spring-data-solr の使用を開始しました。
設定
spring-data-solr のセットアップは非常に簡単です。
現在、 and をRepository
拡張したものを使用しておりSolrCrudRepository
、これは に autowired されていController
ます。
問題
Tomcat をシャットダウンすると、 で 10 分間ハングしDestroying the ProtocolHandler
ます。
-Thread がパークされていることを除いて、searcherExecutor
Threaddump はそれ以上の情報を提供しません。
何か案は?
バージョン
- ソーラー: 4.7.2
- Spring-Data-Solr: 1.5.4.RELEASE
- 春: 4.2.5.RELEASE
- トムキャット 7.0.53
- Java 1.8.0u65
- Win 7 および CentOS 6.6
spring-data-solr - Spring Data Solr: フィールドを宣言するときに multiValue を false に設定する方法
Schemaless Solr で Spring Data Solr をいじっています。接続できない点がいくつかあります: スキーマ フィールドはいつ、どのように作成されますか?
アプリケーションのコンテキストが更新されるたびに、スキーマの自動作成によりドメイン タイプが検査され、プロパティの構成に基づいて新しいフィールドがインデックスに入力されます。これには、solr をスキーマレス モードで実行する必要があります。
@Indexed を使用して、使用する特定の solr タイプなどの追加の詳細を提供します。
また、curl リクエストも表示されます。
// curl ../solr/collection1/schema/fields -X POST -H 'Content-type:application/json'
ただし、@Indexed で注釈が付けられたフィールドで単純な例を実行すると、SOLR で呼び出されている /schema/fields API が表示されません。これらのフィールドはどのように作成されますか?
私が尋ねている理由は、それらが multiValued=true で自動的に作成されるように見えるからです。multiValued をパラメーターとして取る @Indexed アノテーションは見当たりませんでした。Spring Data Solr がフィールドを作成するときに非 multiValued として宣言するように強制するにはどうすればよいですか?
さて、これはすべて、私が見ているこの例外を解決するためのものです。
値がコレクションとして返されているため、例外が発生していると思いますか?
何が起こっているのかを理解するために、コードをステップ実行しようとしました。問題を引き起こしているフィールドは「name」で、値は [product-1] です。Solr ドキュメントを POJO にアンマーシャリングしようとすると、例外が発生します。
まず、次のメソッドに入ります。
このメソッドを呼び出す場合、値はコレクションで、型は java.lang.String です。これにより、if(documentValue instanceof Collection) が選択され、次のメソッドが実行されます。
このメソッドでは、最終的に type.getComponentType() を呼び出します。これは null を返し、最終的に Assert.notNull() を失敗させます。
このすべてで何が欠けていますか?
私のコードは次のとおりです。クラスの起動と構成:
モデルクラス:
リポジトリ:
テストクラス:
そして最後に、私のPOM: