インデックス検索¶
この章の要旨 大量のファイルを高速に検索するための全文インデックス機構。Lucene.Net による全文転置インデックス(
indexes/配下)と SQLite(zenith.db)によるメタ情報管理を組み合わせ、FileSystemWatcherで変更を差分追従します。アイドル時のみインデックス作成(IdleOnlyExecution+IdleCpuThreshold)やネットワークドライブ軽量処理など、他アプリへの影響を抑える負荷制御が充実。
インデックス検索の概念、設定の詳細、技術的なしくみをまとめて説明します。操作や設定の選び方が一通りわかる初学者向けの内容と、実装やチューニングに興味がある上級者向けの技術説明の両方を含みます。
インデックス検索とは¶
インデックス検索とは、あらかじめフォルダ内のファイル情報をデータベース(インデックス)に蓄えておき、大量のファイルからでも一瞬で検索結果を返すための機能です。
| 検索モード | 特徴 | 向いている用途 |
|---|---|---|
| 通常検索 | その場でフォルダを走査する。常に最新だが、フォルダが大きいと時間がかかる。 | 小~中規模のフォルダを開いた状態で、その場で検索したい場合。 |
| インデックス検索 | 事前に作成したインデックスを使う。非常に高速だが、「いつ・どのくらい更新するか」のチューニングが必要。 | 登録済みの複数フォルダを横断して、横串で検索したい場合。 |
Zenith Filer のインデックス機能は Lucene.NET(Apache Lucene の .NET 移植版)をベースとした全文検索エンジンを使用しており、日本語ファイル名やパスについても高精度に検索できるようチューニングされています。
インデックスのライフサイクル¶
インデックスは、フォルダの登録から更新、再構築まで、次のような流れで管理されます。
- 登録: 「インデックス検索設定」(標準: Ctrl+Shift+4) でフォルダを追加すると、そのフォルダが検索対象として登録されます。この時点ではまだインデックスは作成されません。
- 初回インデックス: 「未インデックスを作成」ボタンを押すと、まだ一度もインデックスされていないフォルダだけを対象に、ディスク上のファイルをスキャンしてインデックスを作成します。
- 差分更新: 設定した更新モードに応じて、FileSystemWatcher による即時検知、一定間隔での再スキャン、または手動実行時にのみインデックスを更新します。一定間隔の再スキャンはアプリを閉じても前回の時刻から数え続け、起動した時点で間隔を過ぎていれば、起動の数分後に走ります。
- アプリでの操作: Zenith Filer で移動・コピー・削除・名前の変更(貼り付け・ドラッグ&ドロップ・一括リネーム・
Ctrl + Zの取り消し・AI によるフォルダ整理・マクロを含む)をしたものは、更新方法にかかわらずその場でインデックスに反映します。無くなった場所の記録は消え、新しい場所はすぐ検索やフォルダのサイズに出ます(インデックスの対象外の場所・ロック中のフォルダには触れません)。 - 開いているフォルダの変更: 更新方法が「変更を自動で取り込む」か「一定間隔でまとめて更新する」のとき、エクスプローラーなどアプリの外で開いているフォルダに加えた変更(ファイル・フォルダの作成・名前の変更・削除)も反映します。「必要なときだけ更新する」のときは反映しません。
- フル再構築: メニュー(⋯)から「フル再構築を実行…」を選択すると、全フォルダのインデックスを一度削除してから最初から作り直します。「フル再インデックス最短間隔」の設定以内に再実行した場合は、実際のフルスキャンはスキップされます。
- 一時停止・再開: 「一時停止」で新規のインデックス作成を止め、「再開」で再開できます。既存のインデックスはそのまま利用され、検索は停止中も可能です。
インデックスの状態は、インデックス検索設定ビューで次のように表示されます。
| 状態 | 意味 |
|---|---|
| 未インデックス | まだ一度もインデックスを作成していません。検索結果に含まれない可能性があります。 |
| インデックス完了 | 現時点での内容に対するインデックス作成が完了しています。 |
| 差分更新中 | 変更検出や一定間隔のスキャンにより、最新状態へ追いつこうとしています。 |
| 一時停止中 | インデックス更新を一時停止しています。既存のインデックスはそのまま利用できます。 |
検索実行時の動き(通常検索 vs インデックス検索)¶
インデックス検索タブで Enter を押したときの流れ(概要):
- まず、既存のインデックスだけを使って高速にヒット候補を取得し、結果一覧に表示します。
- (通常検索モードの場合のみ)必要に応じてフォルダのインデックスを作成し直し、結果が変わる場合は一覧を差し替えます。
- 「鮮度優先」が ON の場合、フォアグラウンドの検索とは別に、バックグラウンドでインデックスの差分更新を実行し、次回以降の検索の精度と鮮度を高めます。
通常検索では、そのフォルダが未インデックスの場合、まずインデックスを作成してから検索を実行します。インデックス済みの場合は即座に検索結果を表示します。
検索結果の鮮度警告バー¶
インデックス検索結果の上部に表示される黄色のバーは、「検索結果が古い可能性がある」ことを示す注意喚起です。
- 対象フォルダの一部がまだインデックスされていない場合のみ表示されます。
- インデックス自体は安全に利用できますが、「未インデックスを作成」などで一度インデックスを作成しておくと、今後の検索結果が安定します。
- メッセージが不要な場合は、バー右端の × ボタンで閉じるか、アプリ設定で「インデックスが古い可能性があるときにメッセージを表示する」を OFF にしてください。
トラブルシューティングとベストプラクティス¶
| 現象 | 考えられる原因 | 確認・対応 |
|---|---|---|
| 検索してもファイルがヒットしない | インデックスがまだ作成されていない、または対象フォルダが登録されていない。 | インデックス検索設定で該当フォルダを登録し、「未インデックスを作成」を実行してください。 |
| 結果が明らかに古い | 削除・移動したファイルがまだインデックスに残っている。 | 該当フォルダを右クリックし「インデックスを再作成」を実行してください。 |
| 警告バーが頻繁に出て気になる | 未インデックスのフォルダが登録されている。 | 警告を「×」で閉じるか、アプリ設定で「インデックスが古い可能性があるときにメッセージを表示する」を OFF にしてください。または「未インデックスを作成」で一度インデックスを作成しておくと、以後は警告が出なくなります。 |
| サーバーが重くなる/バックグラウンド負荷が心配 | 鮮度優先や自動更新が頻繁に動作している。 | 「必要なときだけ更新する」や「鮮度優先」を OFF にし、ネットワークドライブの場合は「ネットワークドライブは軽めに処理する」を ON にしてください。 |
| ショートカットキーが効かなくなる | ターミナルペインや特定のコントロールにフォーカスが残っている。 | アプリを再起動してください。別のペインやファイル一覧をクリックしてフォーカスを戻すことでも回復する場合があります。 |