サナギわさわさ.json

サナギさんとキルミーベイベーとプログラミングが好きです

Solr4.1からSolr5に移行する際の注意点

プロ野球が開幕しました。ヤクルトスワローズが延長戦で勝利するという奇跡を目の当たりにしたので昨日からずっとニヤついています。

今回はSolr4.1からSolr5にデータ移行をした際に自分が少しはまった点を参考として残しておきます。

pint,sintは使えない

古いバージョンとの互換性を保つために残っていたpint,sintがSolr5.0では使えなくなりました。schema.xmlにその型が残っている場合は削除し、代わりにTrieIntFiled(普通のintで問題無い)を使いましょう。double,float,long,dateも同様です。

enablePositionIncrementsは使えない

schema.xmlでのフィルター定義の際に、今までなら

<filter class="solr.KuromojiPartOfSpeechStopFilterFactory"
                   tags="lang/stoptags_ja.txt" enablePositionIncrements="true"/>

のようにすると、取り除いた単語の位置増分情報を有効にすることができていたのですが、Solr5.0ではこのパラメータが使えなくなっています。なので、schema.xml内に存在するenablePositionIncrements="true"とenablePositionIncrements="false"は削除する必要があります。
Solr5.0以降で取り除いた単語の位置増分情報がどのように扱われているのかに関してはまだ調査していません。

CJKTokenizerFactoryは使えない

日本語のバイグラム用に用いるフィルターであるCJKTokenizerFactoryは確か4.3あたりから非推奨になっていたのですが、5.0ではとうとう使えなくなったようです。代わりにStandardTokenizerFactory + CJKBigramFilterFactoryを使いましょう。

LuceneのMAX_TERM_LENGTHを超えたインデックスを登録するとエラーが出る

Solr4.8以降では、LuceneのMAX_TERM_LENGTHを超えたインデックスを登録しようとするとエラーが出るようになっています。
参考: Drupal at Torchbox — Apache Solr Search with Solr > 4.7

特にstring型でインデックス登録すると文字列がそのままインデクシングされるので、巨大文字列を登録しようとした時に落ちる可能性があります。注意しましょう。

とりあえず以上です。また何かはまったら追記します。