y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

IndexServiceを使った全文検索できた

昨日、今日の成果→IndexService+ASP全文検索できた!
サンプルを元に、ページナビゲーション(次へ、戻る、先頭、最終、ページのダイレクトジャンプ)、ソート指定ドロップダウン、結果一覧数の変更ドロップダウンを追加。
なかなか使いやすいものが出来た。セキュリティリスクで悪名高い.htwを使って単語の反転表示にも対応。
苦労したのが、IIS仮想ディレクトリと検索条件のターゲットの関係。これも出来てしまえばなんとも無いことだが、Webディレクトリは匿名アクセスを許可したWebエイリアスとして定義してやり、検索対象をこのディレクトリにしてやらないといけないらしい。
イメージとしては、ファイルシステム上のファイルを閲覧できるかどうかは、インデックスとして作成するディレクトリで定義されてて、Webディレクトリとは無関係だと思い込んでいたため、解決に手間取った。
元ファイルをWeb公開するという前提ならば悪い仕様ではないのだが・・。出来れば、アプリケーションでACL(アクセス制御リスト)を実装したかったので、Webディレクトリをそのままインデキシングして、全部公開してしまうというのは抵抗がある。もちろん、NTFSでセキュリティは付けられるのだが、Windows認証が必要となり、当然アクセスライセンスが掛かってくるという話なのであるからして、「なかなかやってくれるじゃないの」である。

文書・図面管理システムでは、Webアプリのセッション情報を使って、DB上に定義したユーザアクセス権をかけている。フォルダアクセスに対してもグループ、ユーザ単位で操作権限を持たせているので、Webディレクトリをアクセス権限に関係なく全文検索できてしまうというのは非常にアナーキー
もっとアナーキーなネタとして、IndexServiceのdllをオーバーフローさせることで、ファイルシステム上の任意のファイルを全文検索できてしまう・・・というセキュリティホールの存在がある。
もう、これはパンクロックとかスラッシュメタル級のド迫力。

残された課題としては・・
・検索対象のディレクトリ選択機能と、PDFや一太郎Visioを検索可能とするフィルタの追加
DWGなんかの図面のテキストブロックを全文検索できるといいなぁ。(商用のフィルタが出ているみたいだけど)
・アクセスセキュリティの問題
イントラネットで使う場合、セキュリティの問題は絶対にクリアしておかなければならない。
インターネット用途には、「そもそも見せても良いコンテンツしか置かない」という割り切りが最も安全。
・主要全文検索システムでサポートされている複数条件指定
半角スペースを入れるとANDで評価されるというアレである。

今回の機能追加で、自動受信したメールの全文検索や、文書・図面管理で登録したファイルの全文検索、これに加えて、SQLサーバ内のレコードをHTMLで書き出しておけば、これも全文検索できちゃう。
テーブル内のレコードをHTML化するのは、比較的簡単に追加できる。全文検索で表示させるコンテンツという意味の他にも、上手く使えばキャッシュとしても使えそう。(基本的にキャッシュを表示するが、キャッシュが存在しない場合は、動的に検索しにいくような仕組み)

メール巡回受信、全文検索でずいぶん強力な文書管理システムになってきた。
MSDE,IndexService、ASP、BASP21・・諸々すべて材料費が無償なのが素晴らしい!)