Oracle Secure Enterprise Search Secure Connector Software Development Kit Oracle Secure Enterprise Search バージョン 10.1.6 2006 年 6 月 概要 Oracle Secure Enterprise Search 10.1.6 は Web サーバー データベース表 IMAP サーバー ファイル システム および Oracle Portal 内のドキュメントをクロールする独自のセキュア コネクタをサポートします 多くの企業では 社内で作成した もしくはソフトウェア ベンダーから購入した独自の専用ドキュメントやデータのリポジトリを保有しています Oracle Secure Enterprise Search の Secure Connector Development Kit を使用すると ユーザーやベンダーは独自のセキュア コネクタを開発して このようなドキュメントやデータのリポジトリのコンテンツをクロールすることができます Secure Connector Software Development Kit には セキュア コネクタの開発に役立つ以下のような情報が含まれています a. セキュア クローラ プラグイン開発のためのクイック スタート ガイド ( このドキュメントに含まれています ) b. Administrator s Guide の第 3 章 ( セキュア クローラの概要についての説明があります ) URL: http://download-west.oracle.com/docs/cd/b28527_01/doc/search.1016/b19002/toc.htm c. セキュア クローラ プラグインの開発方法についてのチュートリアル URL:http://st-curriculum.oracle.com/tutorial/SESDevTutorial/index.htm d. 実装するインタフェースについての説明が記載された Java ドキュメント URL : http://download-west.oracle.com/docs/cd/b28527_01/doc/search.1016/b19032/toc.htm e. クローラ プラグインのサンプル これにより 独自のセキュア コネクタの開発をすぐに開始することができます URL:http://www.oracle.com/technology/products/oses/files/xmlplugin.zip
セキュア クローラ プラグイン作成のためのクイック スタート ガイド このセクションでは Oracle Secure Enterprise Search を使用してセキュア クローラ プラグインを作成するプロセスの概要を説明します クローラ プラグインの作成手順 1. ブラグインの必要性の確認リポジトリの Web アプリケーションは Web ソースとしてクロールされる場合があります リポジトリが LDAP などの別のアクセス プロトコルをサポートしていれば カスタム ソリューションは必要ありません 2. 使用可能なプラグインの確認必要なプラグインが オラクル社またはサード パーティ ベンダーから提供されているかどうかを確認します オラクル社では LDAP のクロール データベース表のクロール およびファイル ディレクトリのクロールをサポートする 3 つのサンプル プラグインを用意しています 3. ターゲット リポジトリの調査ドキュメントのコンテンツ メタデータ およびアクセス情報 ( オプション ) を取得する際に リポジトリにアクセスする方法を決定します 1 つのリポジトリに対してシングル インスタンスしかないのか それとも何百ものインスタンスがあるのかを判断します たとえば プラグインが一度に 1 つのリポジトリをクロールするか またはすべてのリポジトリをクロールするかによって プラグインの設計を変更する必要があります 4. ドキュメント モデルの決定ドキュメントの構成要素について確認します アプリケーションの実行中に合成された仮想ドキュメントの場合もあれば メタデータのみが含まれる場合もあります 検索対象となるドキュメントの属性として収集する一連のメタデータを決定します 5. ターゲット ドキュメント用 URL の定義ターゲット ドキュメント用 URL は リポジトリ ベンダーが提供する Web インタフェース アプリケーションが生成した HTTP URL の場合もあれば 検索結果の中でエンタープライズ アプリケーションを示す URL の場合もあります たとえば 休暇レポートのアプリケーションを表示するとします この場合 1 つのドキュメントに対して 2 種類の URL が存在する可能性があります 一方は表示用 URL であり 検索結果内でエンド ユーザーが使用します もう一方はアクセス用 URL であり プラグインがドキュメントを取得する際に内部で使用します 表示 URL はデータソース内で一意にする必要があります 6. リポジトリに対するアクセス方法の決定リポジトリのアクセスに必要な情報を検討します データベースの場合 データベース接続文字列 スキーマ名 およびパスワードが該当します クローラは スタンドアロンの Java プロセスであり Oracle Secure Enterprise Search OC4J Web アプリケーションの一部ではありません 7. データソース モデルの決定データソースは 論理単位として扱われるドキュメントの集合です たとえば データベース内の表 イントラネット内の Web サイト またはファイル ディレクトリがあります また データソースはクロールの単位でもあります クローラが一度にクロールするのは 1 つのデータソースです ターゲット リポジトリに関しては このようなソースを定義できる明確なパラメータが必要です
8. ドキュメントのアクセス制御の提供ドキュメント単位での保護が必要な場合 プラグインの作成手順において このステップが技術的にもっとも難易度の高いステップです Secure Enterprise Search を使用してクロールするドキュメントに アクセス制御リスト (ACL) を割り当てる必要があります ACL 内のプリンシパルは グローバル ユーザー ID(GUID) または識別名 (DN) の形式で Secure Enterprise Search によって Identity Management Store として使用されている LDAP サーバーに存在しなければなりません Secure Enterprise Search 10.1.6 でサポートしているのは Oracle Internet Directory(OID) のみです 対象のリポジトリが別の LDAP サーバー (Microsoft Active Directory など ) を使用している場合 リポジトリと OID 間でユーザーのマッピングを維持する必要がありますが これはプラグインの範囲外です Secure Enterprise Search は 管理者がデータソースに ACL を付与することが可能であり データソース レベルのアクセス制御をサポートしています 9. データソースのクロール方法の決定データソースの クロール とは データソース内のドキュメントのリストを探索し 索引付けのためにドキュメントを取得することを意味します クロール設計に関して決定する重要な事項の 1 つに キュー ( プラグイン API の QueueService により提供 ) の使用があります たとえば 表のクロールの場合 テーブルはいくつものクローリング スレッド ( スレッドごとに 1 つのプラグイン ) によって分割され 各プラグインがデータベース接続と SQL の select を実行します この場合 各プラグインがドキュメントをフェッチし続け キューを経由せずにクローラに直接送信します 一方 ファイル ディレクトリのクロールやツリー構造のデータソースの場合は キューを活用してクロールできます ドキュメント コンテンツをキューに入れることはできません 10. 再クロール方法の検討最初のクロールでは 常にデータソース内のすべてのドキュメントを検索しますが 2 回目以降のクロールについては プラグインを使用して何をすべきかを検討します たとえば プラグインを使用して 前回のクロール以降に挿入または更新 削除されたドキュメントを検出できるのかどうかなどを確認します 多くの場合 削除されたドキュメント セットは検出が必要になります このような場合 初回のクロールではなく異なる動作が必要であることを プラグインがどのように認識するのかについて確認します 11. サンプル プラグインの活用 Oracle Secure Enterprise Search には 3 つのサンプル プラグインが同梱されており これらは $OH/search/sample/agent/ フォルダにあります サンプルを調査して プラグインの概要を把握します 12. プラグイン Java クラスの構築 Oracle Secure Enterprise Search の Java クローラ プラグイン API インタフェースである CrawlerPluginManager と CrawlerPlugin を実装すると セキュア クローラ プラグインが作成されます Oracle Secure Enterprise Search クローラによって 残りのプラグイン API が実装されます プラグインのユーザーがプラグインの設定を行う場合 パラメータのリストを明確に定義することが重要です 使用する API のリストについては 後述の API のサマリー および Secure Enterprise Search の Javadoc ドキュメントを参照してください 13. プラグイン Java クラスの jar ファイルへのパッケージ化単純なプラグインの場合 すべてのクラスを 1 つのプラグイン jar ファイルにパッケージ化できます プラグインが別の jar ファイルを使用している場合 プラグイン jar ファイルの MANIFEST.MF の Class-Path で そのクラス パスを指定する必要があります jar ファイルは $OH/search/lib/agent/ ディレクトリに保存します また プラグインのコードが特定のライブラリ ファイル (Windows の.dll ファイル UNIX の.so ファイルなど ) を使用している場合 ライブラリ パス環境変数 (Windows の場合 :PATH UNIX の場合 :LD_LIBRARY_PATH) にそのライブラリ ファイルのパスを含め この環境で Oracle を開始する必要があります クローラは Oracle プロセスから作成されるため ライブラリ パスを含むすべての環境変数を Oracle から自動的に継承します
14. プラグインの登録プラグインは ユーザー定義のデータソース タイプを定義します ブラウザを使用して管理ページに移動し [ グローバル設定 ] [ ソース タイプ ] にある [ 作成 ] ボタンをクリックして CrawlerPluginManager を実装する Java クラス名と対応するプラグイン jar ファイル名を入力します ( 例 : app.crawler.ldap.ldapcrawlerpluginmanager と pluginldap.jar ) 15. プラグインが定義されたソース タイプに基づく新規データソースの作成新しいデータソースを作成する場合は ターゲット リポジトリのデータソース タイプを指定します プラグイン パラメータの値をここで指定する必要があります 新しいデータソースには クローラ スケジュールが自動的に作成されます 16. プラグインのテストスケジューリングされたクロールを開始し クローラのログファイルを参照してプラグインに問題がないかどうかを確認します 多くの場合 このプロセスを繰り返し実行して プラグイン コードを修正し 再パッケージ化する必要があります プラグインのパラメータに変更がない場合は プラグインの再登録は必要ありません 17. クロールしたデータソースの検索テストクロールが正常に終了したらデータソースに対して問合せのテストを実行し 検索結果を参照して検索結果 URL が正常に機能していることを確認します クローラ プラグイン API のサマリー インタフェース サマリー プラグインの作成者により実装 CrawlerPlugin crawl() メソッドがプラグインの中心になる キー メソッド :crawl( ) CrawlerPluginManager CrawlingThreadService DataSourceService プラグインの作成者により実装 プラグインの登録と クローラに使用されるプラグイン インスタンスのマテリアライズを行う キー メソッド :init() getcrawlerplugin() getpluginparameters() クローラへのドキュメント送信のエントリ ポイント キー メソッド :submitforprocessing(documentcontainer target) データソース管理用のオプション サービス キー メソッド :delete(url) indexnow() registergloballov()
DocumentAcl DocumentContainer ドキュメントのアクセス制御プリンシパルの格納オブジェクト DocumentMetadata オブジェクトに保存する キー メソッド :addprincipal() adddenyprincipal() ドキュメントの 容器 ドキュメントを送信するには メタデータとドキュメント ステータスをここに設定する必要がある キー メソッド :setmetadata(documentmetadata) setdocument(inputstream) setdocument(reader) setdocumentstatus() ドキュメントのメタデータとアクセス制御情報を格納するオブジェクト DocumentMetadata GeneralService Logger LovInfo ParameterValues QueueService キー メソッド :setaclinfo(documentacl) setattribute() setcontenttype() setsourcehierarchy() DataSourceService QueueService および LoggingService を取得するためのエントリ ポイント DocumentAcl DocumentMetadata DocumentContainer および LovInfo オブジェクトを作成するファクトリ クローラのログファイルにメッセージを出力するロギング インタフェース キー メソッド :error() fatal() info() warn() 検索属性の LOV を格納するオブジェクト キー メソッド :addattributevalue(name, value) プラグインがデータソース パラメータの値を読み取るためのインタフェース ペンディング中のドキュメント URL を格納するオプション サービス キー メソッド :enqueue() getnextitem() クラス サマリー ParameterInfo パラメータの全般的なプロパティを記述するクラス PluginManager は GetPluginParameters() メソッドを使用して ParameterInfo のリストを返す
例外サマリー PluginException ProcessingException プラグインがエラーを報告する際にスローする例外 isfatalexception() が true である場合 クローラが停止する クローラからプラグインにスローされる例外で プラグインのリクエストの処理中のトラブルを示す 致命的エラーの場合 クローラは停止しようとする 停止しない場合は 次のドキュメントに進むかどうかはプラグインが決定する