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 プラグインの作成者により実装。プラグインの登録と、クローラに使用さ れるプラグイン・インスタンスのマテリアライズを行う。 キー・メソッド:init()、getCrawlerPlugin()、getPluginParameters() CrawlingThreadService クローラへのドキュメント送信のエントリ・ポイント。 キー・メソッド:submitForProcessing(DocumentContainer target) DataSourceService データソース管理用のオプション・サービス。 キー・メソッド:delete(url)、indexNow()、registerGlobalLOV()
DocumentAcl ド キ ュ メ ン ト の ア ク セ ス 制 御 プ リ ン シ パ ル の 格 納 オ ブ ジ ェ ク ト 。 DocumentMetadataオブジェクトに保存する。 キー・メソッド:addPrincipal()、addDenyPrincipal() DocumentContainer ドキュメントの「容器」。ドキュメントを送信するには、メタデータとド キュメント・ステータスをここに設定する必要がある。 キー・メソッド:setMetadata(DocumentMetadata)、 setDocument(InputStream)、setDocument(Reader)、setDocumentStatus() DocumentMetadata ドキュメントのメタデータとアクセス制御情報を格納するオブジェクト。 キー・メソッド:setACLInfo(DocumentAcl)、setAttribute()、 setContentType()、setSourceHierarchy() GeneralService DataSourceService、QueueService、およびLoggingServiceを取得するた めのエントリ・ポイント。DocumentAcl、DocumentMetadata、 DocumentContainer、およびLovInfoオブジェクトを作成するファクトリ。 Logger ク ロー ラの ログ ファ イル にメ ッセ ージ を出 力す るロ ギン グ・ インタ フェース。 キー・メソッド:error()、fatal()、info()、warn() LovInfo 検索属性のLOVを格納するオブジェクト。 キー・メソッド:addAttributeValue(name, value) ParameterValues プラグインがデータソース・パラメータの値を読み取るためのインタ フェース。 QueueService ペンディング中のドキュメントURLを格納するオプション・サービス。 キー・メソッド:enqueue()、getNextItem() クラス・サマリー ParameterInfo パ ラ メ ー タ の 全 般 的 な プ ロ パ テ ィ を 記 述 す る ク ラ ス 。 PluginManager は 、 GetPluginParameters()メソッドを使用してParameterInfoのリストを返す。
例外サマリー PluginException プラグインがエラーを報告する際にスローする例外。isFatalException()がtrueで ある場合、クローラが停止する。 ProcessingException クローラからプラグインにスローされる例外で、プラグインのリクエストの処理 中のトラブルを示す。致命的エラーの場合、クローラは停止しようとする。停止 しない場合は、次のドキュメントに進むかどうかはプラグインが決定する。