「インデックスの有効期限」と「差分クロール」

(from osdn.net/users/shimp)
「インデックスの有効期限」の説明として、

インデックスの有効期限で 5 日を選択している場合は、5 日以上前に登録して更新がなかったものが削除されます。
コンテンツが削除されてしまったデータなどを検索対象から外す場合などに利用できます。
とありますが、インデックスの有効期限を過ぎ、更新は無かったものの
削除はされていないファイルをインデックスに残したい場合、
差分クロールを無効にするのが最善の設定なのでしょうか?

(from osdn.net/users/shatake)
インデックスの有効期限を5日に設定している場合は、
ジョブ管理のCrawlerジョブのスケジュールを5日より短い間隔で
実行する設定にするのが最善です。
差分クロールの設定に関わらず、対象ファイルが削除されていなければ
クロールし新規ドキュメントとして登録されます。
その際に古いインデックスは削除されるので問題ないかと思います。

(from osdn.net/users/shimp)
有難う御座います。
差分クロール有効、インデックスの有効期限を30日、Crawlerジョブのスケジュールを1週間にセットして、
およそ4,000ファイル程度のパスを対象にして運用を始め、
その後、少しずつ検索対象とするパスを増やして、やがて10,000ファイルくらいになっていたのですが、
運用を始めてちょうど30日経った頃に、突然インデックス数が6,000程度に減ってしまったのです。

インデックスの有効期限で 5 日を選択している場合は、5 日以上前に登録して更新がなかったものが削除されます。
を読んで、もしやと思ったのですが、
たぶん、この30日の間に私が行った何かの操作が原因なのだと思います。

もう一度インデックスを作り直して、日数も正確にカウントしながら様子を見てみます。
有難う御座いました。

(from osdn.net/users/shimp)
現象が再現しました。
・差分クロール 有効
・インデックスの有効期限 30日
・Crawlerジョブのスケジュール 毎週土曜日

初回クロールで10,000件強のインデックスが生成され、
その後1ヶ月ほどの日々のファイル追加で100件あまりのインデックスが追加されました。

30日経過後に、いったんインデックスが100件あまりに減少し、
その後の土曜日を経て、元の数に復旧しました。

インデックスの有効期限を7の倍数、28日にして様子を見てみますが、
確認すべき項目など、何かお気づきの点などあれば教えて下さい。
宜しくお願い致します。

(from osdn.net/users/shatake)
再現したFessのバージョンはいくつになりますでしょうか。
9.3.1でない場合、お手数ですがバージョンをあげていただけ
ませんでしょうか。

よろしくお願いいたします。

(from osdn.net/users/shimp)
ver 9.2.0でした。
キーマッチ機能のメリットが今一つ理解できず、9.3.1への移行に二の足を踏んでいたのですが、
9.3.1を試してみようと思います。

年末に入れ替えて1ヶ月様子を見て、
ずいぶん先になりそうですが、結果をご報告申し上げたいと思います。
有難う御座いました。

(from osdn.net/users/shimp)
残念ながらFESS 9.3.1でも再現してしまいました。

本日午前中にインデックスを確認したところ、
30日以上前のインデックスが生き残っていたので、一安心していたのですが、
昼頃に幾つか作業を行い、放置していたところ、
夕方になって古いインデックスがごっそり消えている事に気が付きました。

何か確認すべき点や、誤設定、誤操作の可能性など、思い当たる点はありますでしょうか?
宜しくお願い致します。


【設定】
・クロール全般/インデックスの有効期限: 30日
・クロール全般/差分クロール : 有効
・ファイルシステムクロール: 5項目 (A~Eとします)
・ジョブ管理
A: 0 0 0 ? * SAT
B: 0 0 1 ? * SAT
C: 0 0 2 ? * SAT
D: 0 0 0 ? * SUN
E: 0 0 1 ? * SUN
・ジョブ「A」のみ、たまに手動でクロール(「ジョブの確認」の「開始」ボタン)

【2015/01/13 午前中時点でのインデックス】
solrGroup1 すべて 12144

solrGroup1 20141213000000 20 ←SAT 00:00、ジョブAの初回クロール(31日前)
solrGroup1 20141213010000 334 ←SAT 01:00、ジョブBの初回クロール(31日前)
solrGroup1 20141213020000 2879 ←SAT 02:00、ジョブCの初回クロール(31日前)
solrGroup1 20141214000000 1546 ←SUN 00:00、ジョブDの初回クロール(30日前)
solrGroup1 20141214010000 7298 ←SUN 01:00、ジョブEの初回クロール(30日前)

solrGroup1 20141220020000 21 ←SAT 02:00、ジョブCの差分クロール(24日前)
solrGroup1 20141221010000 2 ←SUN 01:00、ジョブEの差分クロール
solrGroup1 20150105130841 21 ←非定常、ジョブAを手動クロール
solrGroup1 20150110020000 4 ←SAT 02:00、ジョブCの差分クロール
solrGroup1 20150111010000 19 ←SUN 01:00、ジョブEの差分クロール

【2015/01/13 昼頃にやったこと】

  1. tomcat-users.xmlにユーザーを追加
  2. ジョブ「A」に割り付けているファイルシステムクロールにパスを追加
  3. shutdown.bat、PC再起動、startup.bat
  4. この段階では、まだ30日以上前のインデックスが残っていた(と思う)
  5. ジョブ「A」のみ手動クロール ← これが原因か?

【2015/01/13 夕方時点でのインデックス】
solrGroup1 すべて 259 ←インデックス数が激減
solrGroup1 20141220020000 21 ←24日前以降のインデックスは残っている
solrGroup1 20141221010000 2
solrGroup1 20150105130841 21
solrGroup1 20150110020000 4
solrGroup1 20150111010000 19
solrGroup1 20150113122617 192

(from osdn.net/users/shatake)
商用では対応可能でしたが、その修正をOSS版の方に入れ忘れておりました。
次回のリリースでは入れさせていただきます。

よろしくお願いいたします。

(from osdn.net/users/shatake)
補足になります。
本件以前はバッチで–nameを渡し対応しておりました。

現時点の最新バージョンの場合でもCrawlJobの処理をgroovyで
いろいろと記述すれば、ジョブ管理画面でも実行可能ではあります。

また、groovyで特にいろいろと記述しない場合は、CrawlJobがnameを受け取らない
可能性がありますのでFessの方を修正する必要がありました。
こちらの修正は次回リリースに入れさせていただきます。

(from osdn.net/users/shimp)

FESS9.4.0でも同じ現象が生じました。
改めてヘルプを拝見していて、もしかすると正常な動作かもしれないと思い始めました。

【設定】
・インデックスの有効期限: 30日
・差分クロール : 有効
・ジョブ管理
ジョブA: 0 0 0 ? * SAT
ジョブB: 0 0 0 ? * SUN
ジョブC: (以下略)

【現象】

  1. 6/13(土)にジョブAがクロールされ、インデックスAが形成されました
  2. 6/14(日)にジョブBがクロールされ、インデックスBが形成されました
  3. 7/13(月)にインデックスAが有効期限を迎え、削除されました
  4. 7/14(火)にインデックスBが有効期限を迎え、削除されました

たぶん、7/18(土)、7/19(日)のクロールで、
それぞれインデックスA、Bが再形成されるとは思うのですが、
一時的にインデックスが不完全な状態になっています。

Q1. これは設計通りの動作ですか?

Q2. もしもそうなら、一時的とはいえインデックスが不完全な
状態になるのを防ぐためには、どの様に設定するべきでしょうか?

宜しくお願い致します。

(from osdn.net/users/shinsuke)

Q1. これは設計通りの動作ですか?

期待通りの動きです。

Q2. もしもそうなら、一時的とはいえインデックスが不完全な
状態になるのを防ぐためには、どの様に設定するべきでしょうか?

return container.getComponent(“crawlJob”).namespace(“JobA”).execute(executor);
のようにnamespaceを指定してはいかがでしょうか?

(from osdn.net/users/shimp)
有難う御座います。
これが期待通りの動作だったのですね。
これまで私の抱えていた課題を正確にお伝えすることが出来ておらず、申し訳ありませんでした。

ジョブのスクリプトでの対応は私の能力を超えているので、
当座はインデックスの有効期限「なし」で運用を継続しようと思います。
あるいは、クロールのインターバルが7日間なら、インデックスの有効期限を倍数の例えば28日にしておく、というのは効果がありそうにお感じですか?