2019年1月28日月曜日

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

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

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

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

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

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

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

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

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

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

FESSのKuromoji辞書をミスった時の対処法

ミスを含むKuomoji辞書をFESSにアップロードすると、レプリカシャードが落ちてゆきます。 完全にダウンしないところが、かえって手間がかかる感じです。 いろいろ実験してみましたが、「不正な辞書でインデックスに登録した部分を除去する」のが対処療法として使えそうです。 ...