PHPからApache SolrにJSONでデータをポストする
ApacheSolrにデータを投入する場合、
一般的にはxmlのファイルを読み込んだり
MySQLなどからDataImportHandlerで読み込むと便利です。
ただ、クライアントサイドから頻繁にアップデートをする場合など、
PHPとかプログラムからデータを送りつけることができます。
以前使ったときは普通にxmlでポストしたのですが、
公式サイトを見たところJSONでもOKみたいだったので、
少し試してみることにしました。
Updating a Solr Index with JSON
http://wiki.apache.org/solr/UpdateJSON
PHPからJSONでデータを送る場合、
注意するべきことが二つあります。
というか、私が無駄にハマったことが二つあったわけですね。
一つ目は、Content-typeをapplication/jsonにする必要があると言うこと。
これはまあ、ちゃんとサンプルを読みましょうね、という話ではあります。
二つ目は、PHPで配列をjson_encodeしたものをそのまま送りつけても駄目、ということ。
PHPの配列をそのままjson_encodeすると
{"hoge":"huga", "hogehoge":"hugahuga"}
みたいになりますが、Solrは
[{"hoge":"huga", "hogehoge":"hugahuga"}]
としないと受け付けてくれません。