2.23.2008

インデックスサービスを使って、高速にファイルを検索する

そんなソフトを作ろうっていうのは、ここのところずっと言っているとおり。

C#でこの手のプログラムを作る手順としては、




・プロバイダをMSIDXS,データソースを検索したいカタログとした、string型のコネクションリクエストを用意

・そのコネクションを引数にして、OleDbConnection型のオブジェクトを作成

・作成したOleDbConnection型のオブジェクトをOpen

・検索クエリ(SQL)文字列を作成

・Selectの対象となるテーブルはScope()。検索するレコードは、ファイルオブジェクトの持つプロパティ。アスタリスク(*)は使えない

・where句の検索条件として、検索したい文字列を引数に与えたFREETEXT関数を用いる

・作成したクエリ文字列とOpenしたOleDbConnection型のオブジェクトを引数にして、OleDataAdapter型のオブジェクトを作成

・DataSetオブジェクトを作成

・OleDataAdapter型のオブジェクトのFillメソッドに、DataSet型オブジェクトと"SearchResults"という文字列を渡す

・DataSetオブジェクトに検索結果が入るので、データグリッドなどで表示する




というステップを踏めばいけるみたい。(サンプルソースを見ながら考えただけだから、もっと短い手順でOKとか、実はこういう手順を踏むべきだとかいうのがあるかもしれない)

で、今回は前回までに出来たものをちょこっと改良した奴を公開。



ダウンロードはこちらから



ざっとReadMe的なものを書いておくと、

・利用には.NETFramework2.0+が必要。

・バグだらけでも泣かない

・開発環境はVC#2008+WinXP(pro)

といったところ。

当然ですが、インデックスサービスが止まっていると動きませんよ。



さて、このインデックスサービスによる検索、前回はすごく速い!と思ったけど、いろいろいじっているうちにそうでもないような気がしてきた(笑)

もしかして、インデックスのパフォーマンスに関係があるのかなぁ・・・?

ここで終わりにするか、もう少し研究してみるかは、今後のやる気次第。

常駐→すぐに検索ぐらいまでにはするかな。

0 件のコメント: