はじめに
equest Parameters API により、solrconfig.xmlで定義されたパラメータを上書きしたり、その代わりに使用したりできるパラメータセットを作成できます。
パラメータセットは以下のような場面で使用できます。
- リクエストパラメータを頻繁に変更したいときに、毎回 solrconfig.xml を編集するのを避ける
- 様々なリクエストハンドラでパラメータを再利用する
- リクエスト時にパラメータセットを組み合わせて使用する
- パラメータを少し変更するためだけにコレクションを再読み込みするのを避ける
パラメータセットを作成する
パラメータセットの作成は以下のように実行します。
curl http://localhost:8983/solr/test/config/params -H 'Content-type:application/json' -d '{
"set":{
"myQueries":{
"fl":"id,type,area,name",
"rows":"3",
"wt":"csv"}}
}'
この例では、検索結果として id, type, area, name の各フィールドをCSV形式で3件出力するためのパラメータを設定して”myQueries”と名付けています。
パラメータセットを使用する
検索リクエストの際にパラメータセットを指定する場合には、useParams でパラメータセットの名前を指定します。
curl 'http://localhost:8983/solr/test/select?useParams=myQueries&q=name%3A%E5%A4%A7%E9%98%AA'
id,type,area,name
19,官公庁,港区,大阪税関
1408,公園・スポーツ,港区,大阪プール
3150,文化・観光,北区,キッズプラザ大阪
useParams を使わずに同じことをするなら以下のようになります。
'http://localhost:8983/solr/test/select?fl=id%2Ctype%2Carea%2Cname&q=name%3A%E5%A4%A7%E9%98%AA&rows=3&wt=csv'
パラメータセットの側を更新すれば、同じリクエストで検索結果を変えることができます。
curl http://localhost:8983/solr/test/config/params -H 'Content-type:application/json' -d '{
"set":{
"myQueries":{
"fl":"id,type,area,name",
"rows":"5",
"wt":"json"}}
}'
curl 'http://localhost:8983/solr/test/select?useParams=myQueries&q=name%3A%E5%A4%A7%E9%98%AA'
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":11,
"params":{
"q":"name:大阪",
"useParams":"myQueries"}},
"response":{"numFound":1076,"start":0,"maxScore":1.2328514,"numFoundExact":true,"docs":[
{
"id":"19",
"type":"官公庁",
"area":"港区",
"name":"大阪税関"},
{
"id":"1408",
"type":"公園・スポーツ",
"area":"港区",
"name":"大阪プール"},
{
"id":"3150",
"type":"文化・観光",
"area":"北区",
"name":"キッズプラザ大阪"},
{
"id":"4185",
"type":"医療・福祉",
"area":"東成区",
"name":"トーヨーケアセンター大阪"},
{
"id":"4653",
"type":"名所・旧跡",
"area":"北区",
"name":"大阪天満宮"}]
}}
パラメータセットの内容を確認する
$ curl http://localhost:8983/solr/test/config/params
{
"responseHeader":{
"status":0,
"QTime":2},
"response":{
"znodeVersion":4,
"params":{"myQueries":{
"fl":"id,type,area,name",
"rows":"5",
"wt":"json",
"":{"v":2}}}}}
$ curl http://localhost:8983/solr/test/config/params/myQueries
{
"responseHeader":{
"status":0,
"QTime":0},
"response":{
"znodeVersion":4,
"params":{"myQueries":{
"fl":"id,type,area,name",
"rows":"5",
"wt":"json",
"":{"v":2}}}}}
パラメータセットを削除する
$ curl http://localhost:8983/solr/test/config/params -H 'Content-type:application/json' -d '{"delete" :[ "myQueries" ]}'
{
"responseHeader":{
"status":0,
"QTime":136},
"WARNING":"This response format is experimental. It is likely to change in the future."}
$ curl http://localhost:8983/solr/test/config/params
{
"responseHeader":{
"status":0,
"QTime":0},
"response":{
"znodeVersion":5,
"params":{}}}