kuromoji_tokenizerを "search"モードで指定して、
synonym graph filterを使用している場合、
辞書に入ってない単語をシノニムとして指定すると、
シノニムファイルのロード時に、下記のようなレスポンスとなります。
( POST /indexname/_reload_search_analyzers でリロードをかけています)
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "failed to build synonyms"
}
],
"type" : "illegal_argument_exception",
"reason" : "failed to build synonyms",
"caused_by" : {
"type" : "parse_exception",
"reason" : "Invalid synonym rule at line 112",
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "term: \"アウトほげほげ\" analyzed to a token (アウトほげほげ) with position increment != 1 (got: 0)"
}
}
},
"status" : 400
}
これを回避する方法としては、
- kuromoji_tokenizerを "normal"モードで指定する
- 形態素で解析できない単語を登録しない。する場合は辞書に登録する
といった対処がある模様です。
が、上記の方法でチェックすると、kuromojiの辞書に入ってない単語を
一つずつ探していくことになるので、非常に煩雑です。
elasticsearchのAPI、機能を使い、
synonym graph filterで指定しているファイルを一括でチェックすることはできないでしょうか?
もしくは、elasticsearchとは別にkuromojiを使って、
どの単語がどうパースされるか調べるしかないのでしょうか?