LoginSignup
5
5

Fess 差分クロールを考える

Last updated at Posted at 2021-01-26

コメント欄にも情報があります。あわせてご覧くださいませ。

結論

最終更新日時の確認
差分クロールを行う場合に有効にします。

公式ドキュメントには上記のように記載されているが、あくまでクロールを行った際にインデックスの作成を行うか否かの判定にのみ影響しているようで、クロール自体は対象パス内の全ファイルに対して行われている模様。
その為**「差分だから処理速度が速い」**ということはない。
(検証結果は後述)

得てして、差分クロールを求める背景には以下の要件があることと思われる。

  • 新たに追加・更新されたファイルを一定間隔で検索インデックスへ反映したい
  • ただし、処理時間・負荷は可能な限り短く・低くしたい

結論として現在の Fess で上記のような差分クロールを行う為には**「ファイルクロール」ではなく、あらかじめクロール対象のファイル一覧を用意した上で「データストアクロール」**を使用することになると思われる。
(有識者の方、ベストプラクティスがあれば教えていただきたい)

検証

検証環境

  • Fess 13.9.3
  • Elasticsearch 7.9.3

検証方法

以下、3ステップにてクロール完了に要する時間を計測した。

初期クロール

C:/fess-search/dummy/ 配下に dummy0001.txtdummy1000.txt を作成。
ファイルクロールを実施。
crawl01.png
約4分弱で 1000ファイルのインデックス作成が完了。

ファイルクロール

dummy0100.txt の内容を変更(ファイル内に modify と追記)した後、ファイルクロールを実施。
crawl02.png
約4分弱で 変更された 1ファイルのインデックス作成が完了。初期 1000件クロールと同程度の処理時間を要した。

search1.png
更新が反映されていることを確認。

データストアクロール

データストアクロールの設定は以下を参考に実施。
https://fess.codelibs.org/ja/13.9/admin/dataconfig-guide.html

アクション、クロール対象を記載した CSV を C:/fess_crawl_list/ 配下に作成する。

/fess_crawl_list/update.csv
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 と追記)した後、データストアクロールを実施。
crawl03.png
一瞬で変更された 1ファイルのインデックス作成が完了。

search2.png
更新が反映されていることを確認。

5
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5