Fessの管理APIで同義語を登録するとき、"inputs": "検索,サーチ"のようにカンマで語を並べると登録できません。1語ずつ改行で区切ったJSON文字列を送ります。15.9向けの文書訂正と、形式違反をHTTP 500ではなく400として返す修正を紹介します。
管理APIと辞書を使える環境を用意する
管理APIのapi.admin.access.permissionsの初期値はRadmin-apiです。標準設定では管理画面のアクセストークンに{role}admin-apiを設定し、Authorizationヘッダーで送ります。この権限は管理API全体へアクセスするもので、同義語だけに限定されません。
辞書APIは検索エンジンのCodeLibsプラグインを必要とします。プラグインなしのvanilla構成向けではありません。DICT_IDは自分の環境の同義語辞書IDへ、YOUR_TOKENは発行したトークンへ置き換えます。辞書IDや項目IDに共通の初期値はありません。
JSON内では改行を\nで表す
次の例はローカル環境へ同義語の項目を登録するリクエストです。
curl -X POST 'http://localhost:8080/api/admin/dict/synonym/setting/DICT_ID' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"inputs":"検索\nサーチ","outputs":"検索\nサーチ\nリサーチ"}'
JSON文字列の\nは、サーバーで文字列として読み取られた後に改行になります。JSONのバックスラッシュを二重にエスケープして文字通りの「\n」を送るのではなく、利用するHTTPクライアントで改行入りの文字列をJSONへ変換してください。
inputsとoutputsの各語にはカンマや=>を含められません。辞書ファイルで語やルールを区切る記号として使われるためです。mapping辞書のinputsも1語1行で指定し、カンマや=>を含む入力は拒否されます。辞書の種類ごとにフィールド構造が異なるので、同義語の例をほかの辞書へそのまま送らないでください。
入力違反を再試行で解決しない
修正を含む版では、同義語またはmappingの対象形式違反はHTTP 400、response.status=1と、問題の語を示すメッセージになります。修正前は同じ入力がHTTP 500、status=2になる場合がありました。POSTとPUTが対象です。
400になったら入力を直して送信します。同じカンマ区切りのデータを繰り返し送る方法では登録できません。正常時のstatus=0を確認したうえで、取得APIや管理画面で改行ごとの語が保存されたかを確認します。辞書の保存成功と、検索に解析設定が反映されたことは分けて確認してください。