Spring RestTemplate を使用して Apache Solr インデックスを呼び出しています。リクエスト文字列を手動で作成し、意図的な {variable_name} テンプレート展開変数を提供しません。クエリの一部は、用語 {!lucene q.op=OR} です。残念ながら、これは RESTTemplate.getForObject 呼び出しの一部として URITemplate エンジンによって処理されます。
理想的には、この処理を停止したいと思います。URITemplate が処理しないように { } 文字をエスケープする方法はありますか? 文字のエンコードを試みましたが、RestTemplate はエンコードされていない文字列を想定しているため、2 回エンコードされ、バックエンドで 400: Bad Request が発生します。
サンプル URL:
http://localhost/solr/select?q= {!lucene q.op=OR}se_genbanklocus:* se_gb_create:* se_gb_update:* se_clone_name:* se_sample_tissue:*&facet=true&facet.limit=3&facet.mincount=1&facet.field= se_sample_tissue&facet.field=se_sample_tissue_name&facet.field=se_sample_tissue_code&facet.field=se_sample_tissue_class&facet.field=se_nuc_acid_type&facet.field=ssam_sample_georegion&start=0&rows=10