クロール対象フォルダと取り込み対象¶
扱うこと: クロール対象フォルダの登録・インデックス名の割り当て・フォルダを移動したときの扱い。扱わないこと: 取り込み対象にするかどうかの判定そのもの(取り込み対象の決定)、取り込み一覧の形式そのもの(取り込み一覧)、インデックス作成全体の流れ(インデックス作成のメインフロー)。先に読むページ: インデックス作成。
クロール対象フォルダ(getTargetFolders)¶
クロール対象フォルダは、画面(tebunko.bat)の[インデックス管理]でチェックボックス付きの一覧として登録し、setting.config の targetFolders に保存する(writeTargetFolders。形式は 設定ファイル(setting.config))。チェックを外したフォルダ(enabled が false)は、登録はしておくが取り込まない。インデクサは開始時にこれを読む。フォルダの中のジャンクション・シンボリックリンクは辿らず、取り込まない(取り込み対象の決定)。
- パスは 1 つの書き方にそろえる(
normalizeFolderPath)。エクスプローラーの「パスのコピー」をそのまま貼り付けられる。 - 前後の空白・
"と末尾の\を取り除く(ドライブ直下はD:\のまま、UNC の共有直下は\\server\share)。 - 環境変数(
%USERPROFILE%など)を展開し、/を\にそろえ、長いパス用の\\?\・\\?\UNC\を外し、重なった\・.・..を解決する。 - 相対パス(
work\store\contentなど)は tebunko のフォルダからとみなして絶対パスにする。 - パスとして解釈できない場合(
*?を含む・共有名の無い\\server・\ひとつで始まる)は、書かれたとおりに扱う(存在しないフォルダになる)。 - 同じフォルダ(大文字・小文字、末尾の
\の違いを含む)が複数あれば、最初のものだけを使う。 ネットワークドライブと UNC パス(Z:\見積と\\server\share\見積)、substのドライブと割り当て元のフォルダのように、 書き方が違うだけで同じ場所を指す場合も同じフォルダとみなす(testSameFolder。ドライブの割り当ては CIM(Win32_LogicalDisk)で調べる)。 ファイルサーバーのフォルダを、あるときはドライブ文字、あるときは UNC パスで登録しても、インデックスが二重にならない。 - フォルダが 1 つも無い場合は例外:
クロール対象フォルダがありません。画面でクロール対象フォルダを追加してください。 - チェックの付いたフォルダが無い場合は例外:
チェックの付いたクロール対象フォルダがありません。画面で取り込むフォルダにチェックを付けてください。 - チェックの付いたフォルダが存在しない場合は、そのフォルダだけ取り込まずに続行する(
… フォルダが見つからないため取り込みませんと黄色で表示)。ネットワークドライブが切断されている場合などに、既存のインデックスを消さないため。
| 操作 | インデックス作成時の動作 |
|---|---|
| フォルダを追加(チェックあり) | 新しいインデックス名を割り当てて取り込む |
| チェックを外す | 取り込まない。インデックスと取り込み一覧の行はそのまま残る(検索対象にも残る) |
| チェックを付け直す | 前回と同じインデックス名で、更新されたファイルだけ取り込む |
| 一覧から削除 | work/store/content/<インデックス名> を丸ごと削除し、取り込み一覧からも除く(クロール対象から削除されたフォルダ(<パス>)のインデックスを削除しました。) |
クロール対象フォルダとインデックス名¶
flowchart TD
A["クロール対象フォルダ(setting.config の targetFolders)"] --> N{"設定に名前がある?"}
N -- はい --> USE["その名前を使う<br>(path を書き換えても名前は変わらない)"]
N -- いいえ --> P{"前回の取り込み一覧に同じパスがある?"}
P -- はい --> USE2["その名前を使う"]
P -- いいえ --> NEW["フォルダ名(toSafeFileName)にする<br>重なれば 名前(2) 名前(3) …"]
USE & USE2 & NEW --> SAVE["割り当てた名前をインデックス作成の最初に設定へ保存<br>(saveAssignedIndexNames)"]
- インデックス名(
assignIndexNames/newIndexName): クロール対象フォルダごとのwork/store/content直下のフォルダ名。設定(setting.configのtargetFolders[].name)に持ち、フォルダの置き場所(path)とは分けて管理する。 - 設定に名前があればそれを使う。フォルダの場所(
path)を書き換えても名前は変わらないため、同じインデックスとして扱える(インデックスも取り込み一覧の行もそのまま使うので、フォルダを移しただけなら再取り込みは起きない)。 - 名前が無い場合(画面で新しく追加したフォルダ・設定ファイルを直接書き換えた場合)は、前回の取り込み一覧に同じパスがあればその名前を使い、無ければフォルダ名(ドライブ直下はドライブ名、UNC の共有直下は共有名)を
toSafeFileNameしたものにする。設定にある名前・前回使われた名前(削除したフォルダの名前を含む)と重なる場合は名前(2)名前(3)… とする(ファイル名の上限 255 文字に収まるよう、元の名前を切り詰めてから付ける)。 - 割り当てた名前は、インデックス作成の最初に設定へ保存する(
saveAssignedIndexNames。設定を読み直して、名前が空の項目にだけ足す。インデックス名を設定に保存しました: …と表示する)。以後は設定の名前が使われる。 - フォルダごと移動した場合: クロール対象フォルダを別のドライブ・共有フォルダへ移した場合は、画面の詳細の「フォルダパス」の欄でそのインデックスの「元のフォルダ」を書き換えるだけでよい(インデックス一覧の管理)。インデックス名は変わらないため、インデックス(TSV)と取り込み一覧の行をそのまま使い、移動しただけで全件再取り込みにならない(次のインデックス作成では、更新されたファイルだけを取り込む)。フォルダ名を変えて移した場合も同じで、名前はインデックス名として保たれる。
- インデックスを削除して新しいパスで作り直すと、別のインデックス(新しい名前)になり、全件取り込みになる。移した場合は詳細の「フォルダパス」の欄で書き換える。
- 検索結果から元のファイルを開くときにフォルダを選んだ場合も、同じ設定(インデックス名に対する場所)が書き換わるため、次のインデックス作成ではそのフォルダを取り込む(元のファイルを開く)。
- 設定から削除したフォルダ(
findDroppedIndexes・removeDroppedFolders): 前回の取り込み一覧にあって、今回どのフォルダにも使われていないインデックス名(設定から外れたインデックス)は、インデックス作成の最初では消さず、取り込み予定に区分削除予定の行として足す。画面から始めた回で、確認ダイアログの[更新を開始]が押されたときだけ、本文インデックスのフォルダ(work/store/content/<インデックス名>)をremoveDroppedFoldersで削除する(名前でパスを組まず、work/store/content直下のフォルダを一覧して名前が同じものだけを消す。一覧に無ければ消さず、外を指す名前は黄色のログに出す。今の名前の決まりに合わない前の版の名前、例えば最後が.のものも、取り込み一覧の読み込みで分けて、同じ確認に出す)。取りやめ・確認の返事が無く打ち切った回・画面なしの実行では削除せず(黄色のログで知らせる)、フォルダと取り込み一覧の行を前回のまま残すので、次の回にまた確認に出る。残している間は検索にも残る(今の決まりに合わない前の版の名前(LegacyFolders)は、フォルダの行は前回のまま残り、次の回もまた確認に出る。各ファイルの行は読み込みで読み飛ばすため残らない。検索に使うファイルは取り込み一覧では決まらず、work/store/contentの下にあるものなので、フォルダが残っている間は検索に出る)。名前で比べるため、移動を引き継いだインデックスは対象にしない。 - 元のフォルダの記録(
source_folder.txt)(writeSourceFolderFile): 取り込み一覧を書き出した直後(取り込むファイルが無い場合も)、work/store/content/<インデックス名>/source_folder.txt(そのインデックス 1 件分。フォルダがまだ無ければ書かない)に、インデックス名とクロール対象フォルダの対応を書き出す。取り込み一覧はwork/にあるため、インデックスのフォルダ(work/store/content)だけを別の PC・場所へコピーすると元のフォルダが分からなくなる。これを避けるため、インデックスのフォルダの中にも対応を置く。インデックス 1 件につき 1 ファイルのため、work/store/contentごとでも<インデックス名>のフォルダだけでもコピーできる。拡張子を.tsvにすると検索対象になるため.txtにする。画面での使い方は 元のフォルダの特定(インデックスを別の PC・場所で使う場合) を参照。# 検索結果から元のファイルを開くときに使う、インデックス名とクロール対象フォルダの対応です(インデックス作成のたびに作り直します) 営業<TAB>C:\data\営業 D<TAB>D:\
取り込み対象をどう決めるか(更新の判定・前の抽出版・強制終了からの再開との関係・画面の確認に出す件数)は 取り込み対象の決定 を参照。