2019年1月28日月曜日

FESSのKuromoji辞書の更新に失敗したら

FESSは非常に優れたオープンソースの検索システムですが、日本語の形態素辞書についてはデリケートな扱いが必要です。

端的に言えば、辞書を間違えると、インデックスが半落ちします。

僕も時々インデックスを飛ばしているのですが、Kuromoji辞書はかなりデリケートです。

何回か飛ばして、不整合を起こす例を調べたのですが、
1.トークンが重複してはならない
2.分割と読みの文節数が一致していないとならない
3.「ぁ」と「あ」は同一視され、かつトークンが重複してはならない
を守らないとなりません。

今はAccessでトークンがユニークになるようにしています。

Kuromojiが失敗すると、FESSは以下の症状を起こします。

1.プライマリシャードは一見、正常に見える
2.レプリカシャードが徐々に落ちる
3.レプリカシャードを手動でアサインできなくなる
4.レプリカシャードをアサインしても、Translogが0.0%から進まない

こうなったら、まずクローラーを停止して、レプリカの数をゼロに戻します。
辞書を正常に動作していた時に戻して、レプリカを1に戻します。

これで、一応アサインされたら復旧できるのですが、成功率が100%でないので、僕も研究をしているところです。