コメント欄にも情報があります。あわせてご覧くださいませ。
結論
最終更新日時の確認
差分クロールを行う場合に有効にします。
公式ドキュメントには上記のように記載されているが、あくまでクロールを行った際にインデックスの作成を行うか否かの判定にのみ影響しているようで、クロール自体は対象パス内の全ファイルに対して行われている模様。
その為**「差分だから処理速度が速い」**ということはない。
(検証結果は後述)
得てして、差分クロールを求める背景には以下の要件があることと思われる。
- 新たに追加・更新されたファイルを一定間隔で検索インデックスへ反映したい
- ただし、処理時間・負荷は可能な限り短く・低くしたい
結論として現在の Fess で上記のような差分クロールを行う為には**「ファイルクロール」ではなく、あらかじめクロール対象のファイル一覧を用意した上で「データストアクロール」**を使用することになると思われる。
(有識者の方、ベストプラクティスがあれば教えていただきたい)
検証
検証環境
- Fess 13.9.3
- Elasticsearch 7.9.3
検証方法
以下、3ステップにてクロール完了に要する時間を計測した。
初期クロール
C:/fess-search/dummy/
配下に dummy0001.txt
~ dummy1000.txt
を作成。
ファイルクロールを実施。
約4分弱で 1000ファイルのインデックス作成が完了。
ファイルクロール
dummy0100.txt
の内容を変更(ファイル内に modify と追記)した後、ファイルクロールを実施。
約4分弱で 変更された 1ファイルのインデックス作成が完了。初期 1000件クロールと同程度の処理時間を要した。
データストアクロール
データストアクロールの設定は以下を参考に実施。
https://fess.codelibs.org/ja/13.9/admin/dataconfig-guide.html
アクション、クロール対象を記載した CSV を C:/fess_crawl_list/
配下に作成する。
modify,file:/C:/fess-search/dummy/dummy0200.txt
クローラ > データストア > 新規作成
インデクシング対象のファイルパスを記述した CSV ファイルをクロールする「CsvListDataStore」を使用する。
項目 | 設定値 |
---|---|
名前 | 任意 |
ハンドラ名 | CsvListDataStore |
パラメーター | directories=C:/fess_crawl_list fileEncoding=UTF-8 |
スクリプト | event_type=cell1 url=cell2 |
ブースト値 | 1.0 |
パーミッション | {role}guest |
状態 | 有効 |
dummy0200.txt
の内容を変更(ファイル内に modify と追記)した後、データストアクロールを実施。
一瞬で変更された 1ファイルのインデックス作成が完了。