Doc Purgerを実行してもインデックス削除されない

Doc Purgerの実行結果について想定とは異なる結果となりましたので
質問させていただきます。

下記設定でファイルサーバをクロールした後、特定の1ファイルをサーバ上から削除しました。

システム > 全般 > クローラー
・最終更新日時の確認 有効
・同時クローラー設定 5
・以前のドキュメントを削除 0日
・除外するエラーの種類 (未設定)
・障害数のしきい値 -1

Doc Purgerを実行したところ、1秒未満で処理が終了したのですが
検索結果には依然削除した1ファイルが表示されます。
(検索結果をクリックするとsystem errorとなってダウンロードはできません)

Doc Purgerのジョブ設定は下記のとおりです。
・名前 Doc Purger
・対象 all
・スケジュール 0 0 * * *
・実行方法 groovy
・スクリプト return container.getComponent(“purgeDocJob”).execute();
・ロギング 有効
・クローラージョブ 有効
・状態 有効
・表示順序 1

想定ではDoc Purger実行後にサーバから削除されたファイルは
インデックスが削除されて、検索結果に挙がらなくなるものと考えていたのですが、
そうなりませんでした。
ログで詳細を確認しようともしたのですが、ジョブログに状態・開始時間・終了時間が
表示されているのみで、ログファイルには特に出力されていないように見受けられました。

お手数ですが何か確認すべき点や認識齟齬等ありましたら、ご指摘いただけません
でしょうか?よろしくお願い致します。

fess-13.16.0 ※Elasticsearch連携なしで利用
jdk-11.0.10

Doc Purger の動作については、詳細に理解していませんが…

おそらく、管理メニューからの検索、更新して表示される expires の日時を超えたインデックスを削除していると思います。

expires の値の算出に影響するのが、「以前のドキュメントを削除」の日数です。
クロールを実行してインデックスが作られる時に、計算、セットされています。

0 日をセットすると、クロール実行する度にインデックスが削除されてしまい、再度インデックスが作られるまで検索結果に出なくなってしまうため、1 日以上じゃないと実用性がないかと思います。
ファイル数が多いと使い物になりません。検証をお勧めします。

Doc Purger はデフォルトの毎分実行から変更した事はありませんが、
ファイル削除を反映するには、再クロールと削除の日数経過を待つ必要があるという挙動を確認しています。

@zolgear様

ご回答を受けてDoc Purgerの挙動について大分誤解していた事が分かりました。

Doc Purgerはサーバから削除されたファイルのインデックス情報を削除する処理と捉えておりましたが、実際はクロール時に設定した有効期限を基にインデックス削除する処理なのですね。

インデックス削除の条件は、インデックス作成日から「以前のドキュメントを削除」で設定された日数以上経過したものが削除されるのだと誤解していたため「0日」を指定して動作検証しておりました。
しかし、今回検証対象としていたインデックス情報は、以前「-1日」設定で作成していたものであったため、expiresが未設定(空欄)となっておりました。
これでは「以前のドキュメントを削除」設定が何日であろうとDoc Purgerでは削除されませんね。

expiresというプロパティ項目がある事がわかりましたので、ようやく理解できました。
ご教示いただき、ありがとうございました。

1 Like