相も変わらずSolr 1.4→4.2系への移行で悪戦苦闘中。
コンパイルが通って喜んでたら、その後の設定のところでいろいろハマったのでメモその2。
◯schema.xml
Solr 3.6以降では、「termPositions="true"」かつ「termOffsets="true"」で、明示的に「termVectors="true"」が指定されていないフィールドにデータをaddしようとするとエラーになる模様。このためそれ以前のVer.からの移行の際にはschema.xmlの修正が必要。
◯solrconfig.xml
一番変更があるのがここ。
・luceneMatchVersionが必須。
・indexDefaultsとmainIndexがなくなりindexConfigに事実上統合される。これも修正しないとエラー。
・ResponseWriter系のクラスがorg.apache.solr.request.*→org.apache.solr.response.*に軒並み移動。なのでこのへんのクラスをqueryResponseWriterで呼んでいる場合は要修正。
・Update時のrequestHandlerが、今までXMLUpdateRequestHandler・BinaryUpdateRequestHandler等に分かれていたのが統合されて、solr.UpdateRequestHandlerで全て賄えるようになった模様(Content-Type:ヘッダでデータ形式を判断して振り分けるらしい)。Solr 4.2レベルではまだ修正の必要はないけど、一応起動時とかにwarningが出るんで修正しといたほうがよさげ。
◯その他
データ投入後のcommit・optimizeで、パラメータにsoftCommitが追加されたのはまあいいとして、問題は
パラメータにwaitFlushが入っているとエラーになる点。
これ今回のシステムで使ってるsolr-php-client(
http://code.google.com/p/solr-php-client/)の最新版(svnからtrunkを取ってきた)でもまだ未対策なんで、手でコードを修正する必要があった。
あとSolrのstats関係を取るAPIが「/solr/[コア名]/admin/stats.jsp」から「/solr/[コア名]/admin/mbeans?stats=true」に変更になってる。ここもhealthcheck関係で使ってるんで、移行先調べるのに手間取った。
今んとここの対応で一応動いている状態だけど、本格的にテストしだすとまだ他にも出てくるんだろうなぁ…。