Fess管理画面のEnter操作と入力エラー表示を改善する

Fessの管理画面で、入力欄のEnterを押すと保存せず一覧へ戻る、入力エラーの項目名や文章が画面と異なる、といった問題を修正しました。キーボード操作、入力検証、存在しないデータからの復帰に関する変更をまとめて紹介します。

Enterでフォームの主操作を実行する

一覧の検索欄では検索、新規作成・編集フォームでは利用可能な主ボタンをクリックする動作になりました。以前はJavaScriptのエラー後、ブラウザがフォームの先頭にある「戻る」を実行し、入力内容を保存せず画面が変わる場合がありました。

Tabで一覧行へフォーカスを移し、EnterまたはSpaceを押すと詳細画面を開けます。行内のリンクやボタンにフォーカスがある場合は、そのコントロール自身の操作を優先します。ファイル入力やボタンのEnterも専用の動作を維持します。

利用可能な主ボタンがないフォームではEnterを抑止します。全般設定を含め、すべての画面でEnterが保存になるわけではありません。日本語入力の変換確定は、変換中と判定できるイベントではIMEへ渡します。保存前に画面の主ボタンを確認してください。

入力エラーを画面の言語で読む

必須入力などの検証メッセージへ、所有者、SSO、通知、辞書、メンテナンスなど112項目のラベルを追加しました。ownerなど内部の項目名の代わりに、画面と対応する名前で問題を把握できます。文の言語が起動後最初にエラーを出した利用者の言語に固定される問題も修正し、各リクエストの言語で文章を解決します。

アイコンだけの検索ボタンにも読み上げ用の名前を付け、ダイアログの閉じるボタンを画面の言語へ合わせています。この変更だけでページャーの状態表示、見出し階層、各エラーと入力欄の関連付けまで全面的に改善されるわけではありません。

削除済みデータと深いページから復帰する

対象の詳細・複製画面で存在しないIDを開いた場合、システムエラーではなく一覧と「見つからない」旨のメッセージを返します。検索エンジンを使う一覧は結果ウィンドウ内の最終ページへ丸めます。indexer.max.result.window.sizeの初期値は10000で、この変更が上限を増やすわけではありません。

辞書の一覧はファイルを読むためページ上限の処理対象外です。ストレージ画面の任意パスに大きな数字を付ける操作など、すべての異常URLを復帰させる修正でもありません。

新しい有効化設定はありません。修正を含む本体へ更新し、管理画面へログインする権限がある利用者が使います。更新後は、一覧の検索、検証用フォームの必須項目エラー、削除済みIDへのアクセスを確認すると、日常操作の改善を把握できます。

関連PR

FessのDropboxクロールをHTTPプロキシ経由で実行する

社内ネットワークからDropboxへの直接通信を許可せず、HTTPプロキシを経由させたい場合に使える設定がDropboxデータストアへ追加されました。あわせて、DropboxとDropbox Paperのクロール終了待ちや失敗通知も改善されています。

対応状況

関連PRはマージ済みです。ただし、今回の変更を含むプラグインの公開バージョンは未確認です。Fess本体の最新公開リリースは確認時点で15.8.0であり、本記事は開発中の変更を説明します。利用時には本体と互換性のある、修正を含んだDropboxプラグインが必要です。

プロキシの設定

DropboxまたはDropbox Paperのデータストア設定に、既存のアクセストークンなどのパラメーターとともに次を追加します。

proxy_host=proxy.example.com
proxy_port=8080

proxy_hostの初期値は空で、未指定または空の場合は直接接続します。ホストを指定する場合はproxy_portも必要です。ポート未指定や数値に変換できない値はエラーになります。HTTPプロキシを通じたHTTPS通信ではCONNECTを許可する必要があります。

Dropbox SDKの既定通信処理はJVMのhttps.proxyHost・https.proxyPortを使用しないため、JVMの起動オプションだけを設定しても、このデータストアの接続先は変わりません。今回追加されたパラメーターを使います。

この設定はBasicクライアントとTeamクライアントで共通です。basic_planの初期値はfalseで、Basicプランを対象にする場合はtrueを設定します。proxy_username・proxy_passwordによるプロキシ認証は今回の対応に含まれません。

空のクロールと失敗を確認しやすくする

修正前は、処理対象が空でも終了待ちが毎回60秒続いていました。修正後はタスク受付を終了してから待機するため、処理が終われば早く戻れます。投入済み処理を待つ上限の60秒は変わりません。

Dropbox Paperでは、チームメンバーの一覧取得が失敗した場合にデータストア例外として報告します。個別メンバーの取得失敗はWARNに記録し、他のメンバーの処理を続けます。ネットワーク不通や無効なトークンで「遅いが成功したクロール」に見える状態を切り分けやすくなります。

導入後はプロキシのCONNECT記録、Fessのクロールログ、取得件数を確認してください。プロキシ経由の疎通ができても、Dropbox側の権限やトークンの有効性は別途必要です。

関連PR

DockerのFess FAQ検索を更新しクロールと回答表示を確認する

docker-faqsearchで、旧キーワード検索版からの更新手順と、クロール・ベクトル化の失敗検出が改善されました。helpdeskテーマにもカテゴリ選択や回答表示の修正が入り、更新後の検索結果を確かめやすくなっています。

バージョンと初期値を確認する

最新の設定例は FESS_VERSION=15.9.0、OPENSEARCH_VERSION=3.9.0、OPENSEARCH_HEAP=3g です。ただし確認時点のFess正式版は15.8.0で、15.9.0の正式イメージは配布済みと確認できていません。これらの修正を試すには対応する開発ビルドが必要です。PRでの実機検証はFess snapshotを使っています。

git pull は既存の .env や data/fess/themes/helpdesk を置き換えません。setup.shのバージョン警告は通知だけで、値は自動変更されません。更新前に .env の固定バージョンとテーマの実体を確認し、必要な値を変更してsetup.shを実行します。既存データを残す場合はバックアップを取ってから進めます。

旧15.7のキーワード検索版から文書を維持して移行する場合、メンテナンスの再インデックスで「エイリアスの更新」を行い、ベクトル対応のインデックスにします。クロールだけでは既存インデックスのベクトルマッピングは追加されません。保存済みGroovyジョブのJavaScriptへの切り替えと、Content Chunk Vector Indexerの実行も必要です。

登録スクリプトを再実行する

bin/register-faq-crawl.sh は既存の faq-content WebConfigをスクリプトのURL・除外条件などへ更新し、クロールとベクトルジョブを実行します。手動で変えた対象項目も更新される点に注意してください。--no-crawl でも設定は更新されます。

ジョブの最終状態がokでなければ失敗終了します。ベクトルジョブがokでも文書の content_chunk_status がdoneでなければ止まります。ただし検査は管理検索一覧の先頭ページのサンプルで、全件の保証ではありません。ジョブログとfess-chunk.log、実際の検索を併せて確認します。除外条件を更新しても、既に登録された入口ページなどの文書は自動削除されません。

bin/seed-faq.sh はラベルをvalue、関連コンテンツと関連クエリーをtermで照合し、未登録分だけ追加します。同じ識別子の既存内容は上書きしません。一覧取得が失敗した場合は止まります。検索ログ生成とLabel Updaterなどの実行は再実行時にも行われます。

FAQに合わせて類似度を調整する

SEMANTIC_MIN_SCORE の初期値0.3は12件のデモFAQに合わせた値です。実際のFAQでは正答の言い換えと対象外の質問を試し、モデルと内容に合わせて調整します。閾値を下げると無関係な回答も増える可能性があります。

# data/fess/opt/fess/system.properties
content_chunker.search.min_score=0.3

このファイルの値はJVMの-D指定より優先され、数秒以内に検索へ反映されます。行を削除すると-Dの値に戻ります。.env 側の値を変える場合はコンテナの再作成が必要です。検索時の閾値変更なのでベクトルジョブの再実行は不要です。3gは新しい初期値ですが、あらゆる負荷で容量不足を防げる保証ではありません。

回答画面で確かめること

helpdeskテーマでは、ホームのカテゴリタイルから移動した後の新しい検索へカテゴリが残らなくなります。利用者がオプション欄で明示的に選んだカテゴリは引き継ぎます。関連検索はURLにも反映し、400で拒否された検索では以前の回答・ページャー・ファセットを消します。

閉じたオプションパネルはTab順から外れ、開閉時のフォーカスとEscape、検索欄へ移動する /、ページリンクや狭い画面の表示が改善されました。テーマのソース版は15.9.10、minFessVersionは15.9です。

Fess本体では regex: を使うおすすめ回答の不正な正規表現を保存時に拒否し、既存の不正設定は読み込み時に警告してスキップします。空の検索ではおすすめ回答を返しません。また、空白で区切られた2語以上の通常クエリーでは、末尾の英数字に続く1つの ? を疑問符として取り除きます。I forgot my password? が対象で、単語1つの te? はワイルドカードのままです。空白なしの日本語文も対象外で、find te? の末尾ワイルドカードは使えなくなるという制限があります。

関連PR