Fessでサジェストの設定を変えても画面に反映されない場合、サジェストのインデックス更新と人気ワードのキャッシュを分けて確認します。人気ワードのキャッシュ有効期間を、説明どおりの「秒」で扱う修正がマージされました。
初期値60が60秒として動く
fess_config.propertiesには次の初期値があります。
suggest.popular.word.cache.expire=60
suggest.popular.word.cache.size=1000
有効期間の説明は秒でしたが、従来の実装は分として読み、初期値60で最大60分キャッシュしていました。修正後は60秒です。これは書き込みからのキャッシュ期限で、1分ごとに必ずジョブを実行する設定ではありません。
従来の実効値60分に合わせたい場合は、修正後の環境で有効期間を秒数の3600にします。更新を早めるほどキャッシュの再取得が増えるので、設定変更後は負荷も確認します。
ワードの登録だけではインデックスは更新されない
除外ワードや追加ワードの登録・編集・削除、CSVアップロードは、登録済みのサジェスト候補へ即時反映する操作ではありません。「Suggest Indexer」ジョブの実行で反映されます。既定の実行時刻は毎日12:00ですが、運用環境でスケジュールを変更している場合は実際の設定を優先します。
すぐに反映したい場合は、管理画面の「システム > スケジューラ」から「Suggest Indexer」を開き、「今すぐ開始」を実行します。ジョブの成否を確認してから、同じ利用者・権限・ラベル条件で表示を試します。SuggestJobは実行後に人気ワードキャッシュもクリアします。
追加ワードCSVの権限欄も確認する
文書では次のヘッダーと例へ修正されています。
"SuggestWord","Reading","Permissions","Labels","Boost"
"fess","ふぇす","{role}role1","label1","100"
パーミッションは{role}、{user}、{group}の接頭辞を付けます。role1だけではそのロールの指定になりません。これはデータストアスクリプトのRrole1という検索ロール表記とは用途が違います。
キャッシュの修正だけで、失敗したジョブや不正な権限指定まで直るわけではありません。更新されないときは「ワードの設定 → Suggest Indexerの成功 → 利用者条件 → 人気ワードキャッシュ」の順で確認すると、待つべき箇所を判断しやすくなります。