どの処理がどのファイルを読み書きするか¶
扱うこと: tebunko が読み書きするファイルとフォルダの全部(置き場ごとの一覧・配布形ごとの置き場・読まない書かない場所)と、画面とインデクサが読み書きするファイルの表(作成・使用・文字コード・内容)。扱わないこと: 各ファイルの形式そのものの詳細(各ファイルのページ)、データの置き場所の決め方(データの置き場所とパスの決め方)。先に読むページ: データの置き場所とパスの決め方。
tebunko が読み書きするファイルとフォルダは、このページの「置き場ごとの一覧」にすべて載せる。書けない・読めないときの振る舞い(パスに [ ] がある・長すぎる・共有に届かない)は データの置き場所とパスの決め方 が正本で、ここには写さない。
置き場ごとの一覧¶
置き場は次の 8 つに分かれる。「読む」「書く」は、tebunko 本体(画面とインデクサ)とインストーラーがするものに限る。.NET・WPF・PowerShell の本体が読むもの、Office が自分で読み書きするもの、テストと tools/ が使う一時ファイルは含めない(Office 自身が元のファイルの隣に作る一時ファイル ~$*.xlsx などは、クロール対象フォルダの中にできることがある)。
flowchart LR
TOOL["ツールのフォルダ<br>$rootDir"]
DEF["既定のワークスペースの直下"]
WS["ワークスペース<br>work/"]
CRAWL["クロール対象フォルダ"]
USER["利用者が選んだ場所"]
INST["インストーラーが書く場所"]
OS["OS・ほかのアプリの場所"]
OLD["過去の版が残したものを消すときだけ触る場所"]
APP["tebunko"]
APP -- "読む・書く" --> TOOL
APP -- "書けないときだけ書く" --> DEF
APP -- "読む・書く" --> WS
APP -- "読むだけ" --> CRAWL
APP -- "読む・書く" --> USER
INST -- "書く" --> TOOL
INST -- "書く" --> OS
APP -- "読む" --> OS
APP -- "片付けだけ" --> OLD
ツールのフォルダ($rootDir)¶
zip 版は展開したフォルダ、インストーラー版は {app}(既定 %LOCALAPPDATA%\Programs\tebunko)、単一 .ps1 版はその .ps1 を置いたフォルダ。カレントディレクトリには依存しない。
| パス | 読む/書く | 内容 |
|---|---|---|
scripts/(gui.ps1・shared/・tebunko/ の下の .ps1・.xaml・tebunko.ico) |
読む | 起動のたびに読み込む。画面の XAML・アイコンもここから読む(単一 .ps1 版は XAML を埋め込む。フォントは Windows 標準のものを使い、同梱しない) |
scripts/tebunko/startup/*.txt |
読む | 起動に失敗したときに示す理由の文章(tebunko.bat。Notepad で開く) |
scripts/ の下のすべてのファイル |
書く(Mark-of-the-Web の解除) | tebunko.bat(zip 版)と gui.ps1(単一 .ps1 版以外)が Unblock-File で、ダウンロードの印(Zone.Identifier)を外す(Mark-of-the-Web の解除)。印が無ければ何も変わらない |
VERSION.txt |
読む | 版とコミット(画面の[バージョン情報]・エクスポートの目録)。配布物にだけある。単一 .ps1 版は埋め込み、開発中は無く「開発版」になる(作業ツリーの .git の HEAD・packed-refs・refs\tags などを読むだけで、タグとコミットを添える。readDevVersion。外部のコマンドは起動しない) |
work\tmp\<PC の鍵>\open_copy\ |
書く・消す | [新規で開く]のコピー(Office 以外。copySourceForOpen)。起動時に、最後に使ってから 1 日より古いものだけを消す(clearOldOpenCopies)。閉じるときは消さない |
work\tmp\<PC の鍵>\search_overflow\<PID>\<要求の番号>\ |
書く・消す | 検索の結果が件数の上限を超えたときの、表に入らない分(<作業の番号>.tsv・<作業の番号>.head.tsv。上限を超えた分)。次の検索の始めと画面を閉じるとき(検索の司令のスレッドの終わり)に自分の <PID> のフォルダごと消し、起動時に動いていないプロセスのものを裏で消す(removeStaleSearchOverflow) |
setting.config |
読む・書く | 設定(設定ファイル(setting.config))。ツールのフォルダに書けるときだけここに置く。書けないときは「既定のワークスペースの直下」 |
setting.config.tmp |
書く | 設定を保存する途中の一時ファイル。書き終えたら setting.config に置き換える(writeTextLinesAtomic) |
setting.config.broken-<日時>[-<番号>] |
書く | JSON として読めない設定の退避(repairBrokenSettings。起動のとき 1 回だけ) |
startup_error.txt |
書く | 起動そのものに失敗したときの記録。tebunko.bat は上書き、gui.ps1 は追記(writeStartupErrorFile)。ツールのフォルダの直下にだけ書き、書けなければ残さない。インストーラー版のアンインストールで消える。gui.ps1 が追記する前に 1 MB 以上なら startup_error_previous.txt へ移す(増え方と片付け) |
startup_error_previous.txt |
書く | startup_error.txt の前回の分(1 MB を超えたとき、あれば上書きして移す)。startup_error.txt と同じく、ワークスペースと一緒には動かない |
.tebunko_write_test_<GUID>.tmp |
書く(すぐ消える) | ツールのフォルダに書けるかを、ファイルを作って調べる(testWritableFolder。閉じると消える DeleteOnClose)。EDR・DLP の記録に、この名前の作成が出る |
tebunko.exe(インストーラー版) |
読む | 起動口。scripts/tebunko/gui.ps1 を PowerShell で起動する |
tebunko.bat(zip 版) |
読む | 起動口 |
既定のワークスペースの直下¶
%USERPROFILE%\Documents\tebunko_ws(getDefaultWorkDir。環境変数 TEBUNKO_DEFAULT_WORKSPACE があればその絶対パス)。ツールのフォルダに書けないときだけ、設定の置き場になる。
| パス | 読む/書く | 内容 |
|---|---|---|
setting.config・setting.config.tmp・setting.config.broken-<日時>[-<番号>] |
読む・書く | 上の表と同じ。ツールのフォルダに書けないときの逃げ先。ワークスペースを別の場所に移しても、設定はここに残る。ワークスペースの中身としては数えない(testSettingsFileName) |
.tebunko_write_test_<GUID>.tmp |
書く(すぐ消える) | 設定の置き場に書けるかを調べる(testWritableFolder) |
| フォルダ自体 | 作る | 設定を置くときと、ワークスペースが既定のとき |
ワークスペース¶
既定は %USERPROFILE%\Documents\tebunko_ws。[設定]で変えられる(workspaceFolder)。設計書では work/ と書く。中の場所は Workspace クラス(ワークスペースの中の場所)が決める。
| パス | 読む/書く | 内容 |
|---|---|---|
work/store/format.tsv(一時ファイルを経由して置き換える) |
読む・書く | 目録(形式の版・各インデックスの状態。インデックスのファイルの形) |
work/store/content/(<インデックス名>/…/content_index.<拡張子>.<番号>.tsv・source_folder.txt) |
読む・書く | 本文インデックス。インデックス作成が書き、検索・一覧が読む。インポートで置き換え、クロール対象から外したフォルダの分は消す。<名前>.tmp に書いてから置き換える(writeContentIndexFile)。改名のときは <名前>_rename_<PID> を経由する |
work/store/gram/<インデックス名>/(toc.tsv・g<10 桁>.seg) |
読む・書く | 2-gram の索引(検索で照合するファイルを絞る。作り直せる。2-gram の索引)。区画は一時ファイルに書いて置き換える |
work/system_index/・work/system_index_state.tsv(前の版が作った検索用のファイル) |
消す | インデックス作成の始めと、インポートの取り込む前に消す(読まず、書かない。片付け) |
work/store/ingest_status.tsv(.tmp を経由して置き換える) |
読む・書く | 取り込み一覧 |
work/store/pending_remove.tsv(.tmp を経由して置き換える。0 件なら消す) |
読む・書く・消す | 本文インデックスから外し終えていない、無くなった元のファイルの記録。次のインデックス作成の始めに読み、外し終えたら消す。work/store/ の中なので、移すときも store\ ごと移り、作り直しで置き場ごと消える |
work/content_index/・work/ingest_status.tsv(前の版の置き場) |
読む(古い形式かの判定)・消す | 読まず、検索もしない。作り直しが終わったインデックスの分から消す |
work/store/journal/ingest.tsv |
読む・追記する | 取り込みのジャーナル |
work/publish/<PID>/(import/new/・import/previous/ を含む) |
読む・書く | 本文インデックスに入れる直前の TSV と、インポートの展開先 |
work/tmp/<PC の鍵>/<PID>/w<番号>/ |
読む・書く | 取り込みの作業領域。元のファイルのコピー・抽出途中のファイル |
work/office_pids/<PC の鍵>/<PID>.tmp→<PID>.txt |
読む・書く | このツールが起動した Office の記録(office_process.ps1。.tmp に書いてから .txt に改名)。起動時の確認で読む |
work/indexing_log.txt |
書く | インデクサの表示内容(実行ごとに上書き。writeIndexerLog)。先頭に版と環境の見出しを書く。[ログを開く]で Notepad が開く |
work/indexing_log_previous.txt |
書く | 前回のインデックス作成の記録。インデックス作成が二重起動の鍵を取った後、今の indexing_log.txt をここへ移す(あれば上書き) |
work/gui_error_log.txt |
書く | 画面の予期しないエラー(追記。writeErrorLog)。見出しを最後に書いた記録先と今の記録先が違うとき(プロセスの最初の記録・ワークスペースの切り替えの後)と、ファイルが無いとき(1 MB で移した直後を含む)に、記録の前に版と環境の見出しを書く。切り替えで記録が移るため、1 つのファイルに見出しが 2 つ入ることがある。1 MB 以上なら次の記録の前に gui_error_log_previous.txt へ移す。起動に失敗したときも、ここに書けるならここに書く |
work/gui_error_log_previous.txt |
書く | gui_error_log.txt の前回の分(移すたびに上書き) |
work/search_results.txt |
書く | 検索結果の出力 |
work/index/(過去の版が置いた本文インデックス) |
読む・消す | 残っているかの調べ・知らせ・[設定]の「移す」「消して最初から」のときだけ。ここには書かない |
work/release/・work/test/・work/site/・work/cache/ |
– | 開発用(tools/ が書く。配布物には入らない)。tebunko 本体は触らない |
ワークスペースを移すとき(WorkspaceMover.MoveEntries)は、Workspace.Entries() のものだけを新しい場所へ移す・写す。
クロール対象フォルダ¶
利用者が登録した元のファイルのフォルダ。読むだけで、書かない。
| 読むもの | いつ |
|---|---|
| フォルダの中身の一覧(再帰) | インデックス作成の取り込み予定を作るとき(Get-ChildItem)。フォルダ・設定画面のツリーを開くとき |
取り込み対象のファイル(.xlsx .xlsm .xls .xlsb .docx .docm .doc .pptx .pptm .ppt とテキストファイル・.pdf) |
取り込むとき。元のファイルに影響を出さないよう、作業領域へコピーしてから読む(copyFileShared)。保護の判定のため先頭を読む(office_protection.ps1) |
| 元のファイル | 検索結果から開くとき(Office・既定のアプリ・Notepad・エクスプローラー)。tebunko は書かない |
利用者が選んだ場所¶
| パス | 読む/書く | 内容 |
|---|---|---|
エクスポートの保存先(<インデックス名>_インデックス_<yyyyMMdd>.zip)と <保存先>.tmp |
書く | 1 つのインデックスの zip(インデックスのエクスポート・インポート) |
| インポートする zip | 読む | ファイル選択ダイアログで選んだ zip |
| フォルダを選ぶダイアログ・ドラッグしたフォルダ | 読む(存在の確認・一覧) | ワークスペース・クロール対象フォルダの選択。ワークスペースを選んだときは、書けるかを試すファイルを作って消す |
| 検索結果の[コピー] | – | クリップボードに書くだけで、ファイルは作らない |
インストーラーが書く場所¶
installer/tebunko.iss(Inno Setup)。管理者権限なしで入れるのが既定。
| 場所 | 書く内容 |
|---|---|
{app}(既定 %LOCALAPPDATA%\Programs\tebunko。管理者は Program Files も選べる) |
tebunko.exe・scripts\・LICENSE・VERSION.txt。更新のとき、先に scripts\ を消してから入れる |
{app}\uninstall |
アンインストーラー(unins000.exe など) |
スタートメニュー({autoprograms}\tebunko)・デスクトップ(選んだときだけ) |
ショートカット |
レジストリのアンインストールの情報(AppId の鍵) |
Windows のインストーラーが必ず書くものだけ。[Registry] は使わない |
| アンインストールで消すもの | 入れたファイルと {app}\setting.config・{app}\startup_error.txt・{app}\startup_error_previous.txt・{app}\startup_error_moving.txt。ワークスペース(インデックス)は消さず、残っている場所を知らせる |
OS・ほかのアプリの場所¶
| 場所 | 読む/書く | 使うところ |
|---|---|---|
%USERPROFILE%(GetFolderPath("UserProfile")) |
読む(パスを組み立てる) | 既定のワークスペースの場所(getDefaultWorkDir) |
%SystemRoot%\System32\notepad.exe |
起動する | ログ・拡張子が危ないファイルを開く(openWithNotepad・[ログを開く]) |
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe |
起動する | 起動口(tebunko.bat・tebunko.exe)。PATH からは探さない |
explorer.exe |
起動する | [フォルダを開く]・フォルダの選択・「バージョン情報」のリンク(決まった 2 つのアドレスを既定のブラウザで開く) |
%SystemRoot%\System32\ntoskrnl.exe |
読む(ファイルの版だけ) | ログの見出しの OS の版(getEnvironmentInfo) |
Windows のあるドライブの Program Files・Program Files (x86) の Microsoft Office\root\Office16・Microsoft Office\Office16・Microsoft Office\Office15 の EXCEL.EXE・WINWORD.EXE・POWERPNT.EXE |
読む(有無とファイルの版だけ。起動しない) | ログの見出しの Office の版・形態・ビット数(findOfficeApps)。ほかのドライブや別の版の Office は 見つからない と出る |
| Excel・Word・PowerPoint のプロセス | 起動・終了 | 古い形式の変換・元のファイルを開く。起動した PID は work/office_pids/ に記録する |
設定値の %…%(ExpandEnvironmentVariables) |
読む | クロール対象フォルダ・ワークスペースに環境変数があれば展開する(folder.ps1・settings.ps1) |
| カレントドライブ | 読む | \server\share のように \ ひとつで始まる、ドライブ名の無いパス(今のドライブのパスには直さず、書かれたとおりに扱う)。ドライブ名だけ(D:)はドライブ直下とする |
TEBUNKO_GUI_LEFTOVER_FILE(環境変数) |
読む | 画面のテスト用。残った Office の確認の行に偽の行を差し込むファイルの場所(利用者は使わない) |
TEBUNKO_GUI(環境変数) |
作る・読む | 作るのは tebunko.exe(インストーラー版の起動口。起動する PowerShell のプロセスの中だけ)。gui.ps1 のパスを -Command に渡す。読むのは -Command の WildcardPattern.Escape の引数だけ |
TEBUNKO_ROOT(環境変数) |
作る・読む | 作るのは tebunko.bat(その起動のプロセスの中だけ)。ツールのフォルダのパス(末尾は \)を -Command に渡す。読むのは -Command の Step 1 だけ |
TEBUNKO_DEFAULT_WORKSPACE(環境変数) |
読む | 開発・確かめ用。既定のワークスペースの場所を差し替える(絶対パスだけ。利用者は使わない) |
過去の版が残したものを消すときだけ触る場所¶
| 場所 | 触り方 | 内容 |
|---|---|---|
%TEMP%\tebunko\<PID>(legacyTmpParent) |
消すだけ | 過去の版が一時ファイルを置いていた場所。インデックス作成の始めに、終わったプロセスの分を消す。この場所には書かない |
<ワークスペース>\index\(過去の版が置いた本文インデックス) |
読む・消す | 上の「ワークスペース」の最後から 2 行目のとおり |
配布形ごとの置き場¶
| 配布形 | ツールのフォルダ | ツールのフォルダに書けるか | 設定(setting.config)の置き場 |
起動口が読むもの |
|---|---|---|---|---|
| zip を展開した版 | 展開したフォルダ | 展開先による。自分のフォルダなら書ける。読み取り専用の共有・Program Files に置くと書けない | 書ければツールのフォルダ。書けなければ既定のワークスペースの直下 | tebunko.bat → scripts/tebunko/startup/*.txt(失敗時)・gui.ps1・scripts/ 全体・VERSION.txt・XAML・アイコン。起動のたびに scripts/ の Mark-of-the-Web を外す(tebunko.bat と gui.ps1) |
| インストーラー(利用者ごと) | %LOCALAPPDATA%\Programs\tebunko |
書ける | ツールのフォルダ({app}\setting.config) |
tebunko.exe → scripts/tebunko/gui.ps1 以下・VERSION.txt。gui.ps1 が scripts/ の Mark-of-the-Web を外す(インストーラーが書いたファイルには付かないので、何も変わらない) |
| インストーラー(Program Files・管理者が選ぶ) | C:\Program Files\tebunko |
普通の利用者は書けない | 既定のワークスペースの直下(%USERPROFILE%\Documents\tebunko_ws\setting.config)。アンインストールでは消えないため、不要なら手で消す |
利用者ごとの版と同じ |
単一 .ps1 |
その .ps1 を置いたフォルダ |
置き場による | 書ければその .ps1 と同じフォルダ。書けなければ既定のワークスペースの直下 |
その .ps1 自身だけ。scripts/・VERSION.txt・XAML のファイルは読まない(埋め込み)。Mark-of-the-Web は外さない(動き始めた後に外しても効かないため) |
どの配布形も、インデックス・取り込み一覧・ログ(ワークスペース)は、既定または[設定]で選んだ場所に置く。設定の置き場は $rootDir に書けるかを起動のたびに調べて決まる(データの置き場所とパスの決め方)。startup_error.txt は、どの配布形でもツールのフォルダの直下にだけ書く。
読まない・書かない場所¶
次の場所には書かない。
%LOCALAPPDATA%\tebunko: 設定の逃げ先にも起動失敗の記録にも使わない。読みも書きもしない(インストーラー版の%LOCALAPPDATA%\Programs\tebunkoは別で、ツールのフォルダ)。%TEMP%: 一時ファイルはワークスペースのtmp\の下にだけ置く。過去の版が残した%TEMP%\tebunko\を消すときのほかは触らない。- レジストリ: インストーラーが書くアンインストールの情報を除き、読みも書きもしない。
- クロール対象フォルダ・元のファイル: 書かない(読むだけ)。
増え方と片付け¶
tebunko が作るファイルとフォルダが、何年使っても溜まり続けないことを、置き場ごとの表で確かめる。新しくファイルを足すときは、増え方と上限、誰がいつ消すかを決めてから、この表に行を足す。期間(何日より古いか)で消す処理は持たない。大きさと世代で止める。
- 掃除の時機: 起動時・終了時のまとめての掃除はしない。ログは書く直前に大きさを見て回す(書かなければ増えないため。起動を遅くせず、届かない共有フォルダで起動が待たされない)。作業のフォルダは、終了時に消し、残りは次のインデックス作成の始めに消す。
- 移せないとき:
rotateLogFileはFile.Replaceで前回の分を置き換える。今のログが開いたまま・前回の分が読み取り専用・置き場所がFile.Replaceに対応しないときは、今のログは失わず、元のログに追記を続ける。開いたまま・読み取り専用は、閉じる・前回の分を消すなどで解けたあとの次の記録のときに移る。File.Replaceに対応しない置き場所では、1 回目だけ移り、2 回目からは移せないままで上限なしに増える(本文インデックスの書き込みwriteContentIndexFileも同じFile.Replaceに頼るので、そういう置き場所はもともとワークスペースとして使えない)。起動失敗の記録(startup_error.txt)は、元をstartup_error_moving.txtへ移してから前回の分に重ねる。重ねられず、元の名前に戻す移動も失敗したときだけ、startup_error_moving.txtが残る。 - 画面のスレッドとの関係: ログを回す移動は、書く直前に 1 回だけ行う(今の追記と同じ種類の I/O。
docs/design/gui/responsiveness.mdの考えを超えない)。 - ワークスペースの表の 1 列目は
Workspace.Entries()の名前(GetFileName)と完全一致でtests/meta/workspace_files.Tests.ps1が比べる。ワークスペースの外の置き場の表は、テストの対象外。
ワークスペース(Workspace.Entries())¶
| 名前 | 増え方 | 上限・片付け |
|---|---|---|
store |
元のファイルの数に比例(中の format.tsv は上書き、ingest_status.tsv は上書きで 1 つ) |
store\content は元のファイルが無くなれば消す。外したフォルダの分は利用者が確認ダイアログで消す(利用者のデータ。自動で期間では消さない) |
content_index |
増えない(前の版が置いたもの) | 作り直しが終わったインデックスの分から消す。空になれば content_index ごと消す。消せなければ残し、次のインデックス作成の終わりに消す |
index |
増えない(過去の版が置いたもの) | [設定]の「移す」「消して最初から」・インデックス作成の始めに片付ける |
store\gram\<インデックス名>\ |
元のファイルの数に比例 | 区画(g<10 桁>.seg)と目録 toc.tsv。作り直せる |
ingest_status.tsv |
増えない(前の版が置いたもの。今の取り込み一覧は store の中) |
1 つ。作り直しが終われば消す |
store/journal/ingest.tsv |
追記(始めに入れ替え) | 1 つ。1 記録ごとに追記して Flush する。始めに前回の分を読んで入れ替える |
search_results.txt |
上書き | 1 つ |
indexing_log.txt |
実行ごとに上書き | 1 回分。始めるとき(二重起動の鍵を取った後)に今の分を indexing_log_previous.txt へ移す |
indexing_log_previous.txt |
実行ごとに上書き | 1 回分。合わせて 2 回分で止まる |
gui_error_log.txt |
追記(同じ例外は 60 秒に 1 回) | 1 MB 以上なら、次の記録を書く前に gui_error_log_previous.txt へ移す |
gui_error_log_previous.txt |
移すたびに上書き | 1 つ。合わせておよそ 2 MB で止まる(移せない場面を除く。「移せないとき」を参照) |
publish |
実行ごとに <PID> を作る |
終了時・インポートの後に消す。残りは次のインデックス作成の始めに消す |
tmp |
実行ごとに <PC の鍵>\<PID> を作る |
終了時に消す。強制終了の残りは次のインデックス作成の始めに、この PC の終わったプロセスの分を消す。共有のワークスペースでは、ほかの PC の残りは消えない(別に直す) |
office_pids |
Office を起動するたびに <PC の鍵>\<PID>.txt |
Office を閉じたら消す。残りは画面の起動時の確かめで消す |
ツールのフォルダ¶
| 名前 | 増え方 | 上限・片付け |
|---|---|---|
startup_error.txt |
tebunko.bat は上書き、gui.ps1(writeStartupErrorFile)は追記 |
追記の側は 1 MB 以上なら、次の記録を書く前に startup_error_previous.txt へ移す。.bat の側は 1 回分 |
startup_error_previous.txt |
移すたびに上書き | 1 つ。合わせておよそ 2 MB で止まる(移せない場面を除く) |
startup_error_moving.txt |
移すときだけ | 重ねられず、元の名前へ戻す移動も失敗したときだけ残る。次に移すとき同じ名前で上書きされ、1 つまで |
setting.config.tmp |
保存のたび | 同じ名前で上書きされ 1 つまで |
.tebunko_write_test_<GUID>.tmp |
調べるたび | 閉じると消える(DeleteOnClose) |
既定のワークスペースの直下¶
| 名前 | 増え方 | 上限・片付け |
|---|---|---|
setting.config.broken-<日時> |
設定が壊れるたびに 1 つ | 自動では消さない(壊れたときだけできる。設定を戻す手がかりそのもの) |
利用者が選んだ場所¶
| 名前 | 増え方 | 上限・片付け |
|---|---|---|
<名前>.zip.tmp(エクスポート) |
エクスポートのたび | 書き終えたら置き換える。強制終了の残りは同じ名前の次のエクスポートで消え、1 つまで |
処理ごとのファイルの表¶
画面(gui.ps1)とインデクサ(indexer.ps1)は同じプロセスの別のスレッドで動き、進み具合・取り込み予定・確認の返事・中止・エラーはメモリ上の受け渡しの口(newIndexerChannel)で受け渡す(画面とインデクサの受け渡し)。この節の表は、上の一覧のうち画面とインデクサが使うファイルに絞って、作成・使用・文字コード・内容を足した表である。
flowchart LR
CFG[("setting.config")]
GUI["画面<br>gui.ps1"]
IDX["インデクサ<br>indexer.ps1"]
ST[("store/format.tsv<br>store/ingest_status.tsv<br>store/journal/ingest.tsv")]
IX[("work/store/content/")]
GUI -- 読み書き --> CFG
IDX -- クロール対象フォルダを読む --> CFG
IDX -- "進捗・取り込み予定・エラー(受け渡しの口)" --> GUI
GUI -- "確認の返事・中止(受け渡しの口)" --> IDX
IDX -- 読み書き --> ST
IDX -- 本文インデックスを書く --> IX
GUI -- 検索・一覧 --> IX
GUI -- 集計を読む --> ST
| パス | 種別 | 作成 | 使用 | 文字コード | 内容 |
|---|---|---|---|---|---|
setting.config |
設定 | 画面 | 画面・インデックス作成 | UTF-8(BOM なし)、JSON | クロール対象フォルダ・検索対象のツリーでチェックを外したフォルダ・元のフォルダ・検索条件・開き方(設定ファイル(setting.config))。PC ごとの設定 |
work/store/ingest_status.tsv |
インデックス作成の状態 | インデックス作成 | インデックス作成・画面 | UTF-8(BOM 付き)、タブ区切り | 先頭にクロール対象フォルダの行、以降 1 ファイル 1 行で相対パス・更新日時・サイズ・状態・TSV 数・取り込み日時・エラー・抽出版(取り込み一覧) |
work/store/journal/ingest.tsv |
インデックス作成の状態 | インデックス作成 | インデックス作成 | UTF-8(BOM 付き・CRLF) | 取り込みのジャーナル。1 行に 1 記録(版・回・持・未・始・出・書・終)で、先頭の列が種類。司令だけが追記して Flush し(IngestJournal)、始めに前回の分を読んで入れ替える。取り込み一覧を書き直し終えると「終」を書く(書き出せなかったフォルダがあっても書く。そのフォルダは「出」が無いことで次の回へ「未」で持ち越す)。「終」が無いまま残っていれば、取り込み中に強制終了した(ジャーナルの形)。前の版の work/ingesting.txt が残っていれば、始めに 1 度だけ読んで消す |
work/publish/<PID>/ |
作業領域 | インデックス作成 | インデックス作成 | – | 1 ファイル分の TSV(<元のファイル名>/<場所>.tsv)。集め終わったら work/content_index の中へフォルダごと移す(publishIndexFiles) |
work/tmp/<PC の鍵>/<PID>/(ワークスペースのパスに [ ] があるか長すぎるときは作らない。どのファイルも中間 TSV などをこのフォルダに作るため、テキストファイルを含めすべての取り込みをスキップする) |
作業領域 | インデックス作成 | インデックス作成 | – | 取り込み中の元ファイルのコピー(Excel は元と同じファイル名、長すぎれば source.<拡張子>。Word・PowerPoint は source.<拡張子>。テキスト・PDF は source.copy。元のファイルに影響を出さないため)、抽出途中の sheet<N>.tmp(UTF-16LE)/ *.tsv、旧形式の変換用の source.doc source.ppt / converted.docx converted.pptx(データの置き場所とパスの決め方「自動生成(work/)」) |
work/indexing_log.txt |
記録 | インデックス作成 | 利用者 | UTF-8(BOM 付き) | インデクサの表示内容(writeIndexerLog。実行ごとに上書き。先頭に版と環境の見出し)。前回の分は indexing_log_previous.txt |
work/gui_error_log.txt |
記録 | 画面 | 利用者 | UTF-8(BOM 付き) | 画面で起きた予期しないエラーの内容(writeErrorLog。追記。1 MB で gui_error_log_previous.txt へ移す) |
work/store/content/ |
インデックス | インデックス作成 | 検索 | 本文インデックスは UTF-16LE(BOM 付き)、LF。本文インデックスに入れる前の TSV は UTF-8(BOM 付き)、CRLF | フォルダ・拡張子ごとの本文インデックス(content_index.<拡張子>.<番号>.tsv。元のファイルごと・場所(シート・ページ・スライド、図形・コメント・ヘッダー・フッター)ごとに、メタ情報の行と TSV の中身を並べる)。取り込み中だけ、シート・ページ・スライドごとの TSV と図形・コメント・ヘッダー・フッターの TSV(<元の場所>[shape]・<元の場所>[comment]・<元の場所>[header_footer]) |
work/store/content/<インデックス名>/source_folder.txt |
インデックス | インデックス作成 | 画面 | UTF-8(BOM 付き)、タブ区切り | 1 行目は説明、2 行目は <インデックス名><TAB><元のフォルダ>(クロール対象フォルダと取り込み対象)。.tsv にすると検索対象になるため .txt |
work/search_results.txt |
出力 | 画面 | 利用者 | UTF-8(BOM 付き)、CRLF | 検索結果(検索結果ファイル) |
利用者が選んだ保存先(既定 <インデックス名>_インデックス_<yyyyMMdd>.zip)と <保存先>.tmp |
出力 | 画面(exportIndex) |
利用者 | zip(エントリー名は UTF-8) | 1 つのインデックスの目録(tebunko-index.json)・取り込み一覧の行・本文インデックスのファイル(インデックスのエクスポート・インポート) |
work/publish/<PID>/import/ |
作業領域 | 画面(importIndex) |
画面 | – | インポートで zip を展開する作業フォルダ(new/)と、上書きのとき前のインデックスを一時的に退避する previous/。インポートが終われば消す |
各設定の意味は、使用する処理の設計書に記載する(クロール対象フォルダ → インデックス作成、検索対象インデックス → 検索、画面での扱い → 設定ファイル(setting.config))。