でじくる。

主にプログラムの話題などを扱うブログです。

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"}]

としないと受け付けてくれません。