SQL を使用して Windows デスクトップ検索 API を照会しようとしています。
Windows 7 の検索 GUI が大嫌いなので、独自の検索 GUI を作成することにしました。多くのファイルにインデックスが付けられており (約 1.000.000)、名前を検索したいと考えています。のようなもの: 「バニー」を含むすべての名前を表示します。
しかし、ここでパフォーマンスの問題に遭遇します。探している
SELECT "System.ItemPathDisplay"
FROM "SystemIndex"
WHERE System.FileName LIKE 'egon%'
は本当に速いです。また、%egon
代替。しかし%egon%
、永遠にかかります。それがインデックスの性質によるものなのか(可能性が非常に高まることを理解しています)、それとも何か間違ったことをしているのかはわかりません。
質問は:
- Windows インデックスが単なる大きな SQL データベースであるというのは正しいですか?
- その場合、DB の構造 (主キー、インデックス) に関する正確な情報はどこにありますか。
それがあれば、基本的には SQL を最適化するだけです。
別の質問:名前のどこかにegonを含むすべてのファイルを検索するための高速な SQL ステートメントを知っている人はいますか?
編集: 検索 GUI が気に入らない理由
XP と比較すると、直感的ではありません。犬を無効にして古い XP インターフェイスを使用すると、次のような検索クエリを作成できます。
- 1 か月以上前のすべてのファイル
- 10MB以上
- 名前パターン
*_homework_*.docx
構文を「学習」せずに、Windows 7 でこれを試してください。1 つのファイルを見つけるためだけに別の構文を学習したくありません。
他の主な問題は、おそらく私の検索の習慣です。ほとんどの場合、ファイル名 (またはその一部) はなんとなくわかっていて、単純に場所が知りたいだけです。この方法で検索を使用すると、いくつかの問題が発生します。
- まず、常に名前の前に付ける必要があります。
- 次に、フォルダー名のレイアウトがばかげています(フルパスではなく、親フォルダーによる順序になっていると思います..多田...次のポイントを参照してください)
- 次に、さらに厄介なことに、結果のリストがあり、それらを並べ替えようとすると、永遠に時間がかかります
そして今、私のシステムにバグがあると本当に思っています。私はすぐにそれをチェックしようとし、平均的なサイズのフォルダーで「テスト」を検索し、いくつかのファイルを見つけました。次に、フォルダーを並べ替えようとしましたが (2 番目のポイントを確認するため)、彼は永遠に検索しているだけです... つまり、私が入力している間、彼は「こんにちは」という単語を見つけようとします... ああ、終了しました - 彼は約 20 個のファイルが見つかりました。では、何か試してみましょう.. わかりました、彼は回復したようです..
だから、検索についての十分な呪い:-)