この章では、次の項目について説明します。
Oracle Ultra Searchクローラは、設定されたスケジュールに従い、Oracleサーバーによってアクティブ化されるJavaプロセスです。クローラはアクティブになると、様々なデータ・ソースからドキュメントをフェッチするプロセッサ・スレッドを起動します。このドキュメントは、ローカル・ファイル・システムにキャッシュされます。キャッシュが一杯の場合、クローラはOracle Textを使用してキャッシュされたファイルに索引を付け、この索引は問合せに使用されます。
クローラを使用する前に、クローラ・スレッド数、クローラ・タイムアウトしきい値、データベース接続文字列、デフォルト・キャラクタ・セットなどの操作パラメータを設定します。これには、管理ツールの「クローラ」タブを使用します。
インストール時に、Oracle Installerにより、この変数に$ORACLE_HOME/ctx/lib
が含まれるよう自動的に設定されます。ただし、インストール後にデータベースを再起動する場合は、Oracleプロセスを開始する前に、共有ライブラリ・パス環境変数に$ORACLE_HOME/ctx/lib
が含まれるよう、手動で設定する必要があります。フィルタ処理を機能させるには、データベースを再起動して新しい値を選択する必要があります。
たとえば、UNIXでは$LD_LIBRARY_PATH
環境変数に$ORACLE_HOME/ctx/lib
が含まれるよう設定し、Windowsでは$PATH
環境変数に$ORACLE_HOME\bin
が含まれるよう設定します。
管理ツールの「ソース」タブでは、Webアクセス・パラメータ以外に、特定のデータ・ソースも定義できます。次に示す1つ以上のデータ・ソースを定義できます。
Webサイト
データベース表
ファイル
メーリング・リスト
Oracle Application Server Portalのページ・グループ
ユーザー定義データ・ソース(クローラ・エージェントが必要)
ユーザー定義データ・ソースを定義して、独自のドキュメント・リポジトリまたは管理システム(Lotus NotesやDocumentumなど)をクロールして索引付けする場合は、クローラ・エージェントをJavaクラスとして実装する必要があります。エージェントは、独自のドキュメント・ソースからドキュメントURLおよび関連付けられたメタデータを収集し、Oracle Ultra Searchクローラに情報を戻します。Oracle Ultra Searchクローラでは、後でクロールするためにその情報をエンキューします。新規データ・ソース・タイプの定義の詳細は、管理ツールの「ソース」タブの「ユーザー定義」サブタブを参照してください。
1つ以上のデータ・ソースが連結された同期スケジュールを作成できます。同期スケジュールは、Oracle Ultra Searchの索引を、関連付けられているデータ・ソースの最新情報で更新する頻度を定義します。同期スケジュールを定義するには、管理ツールの「ソース」タブを使用します。
一部のアプリケーションについては、セキュリティ上の理由から、クロールされるURLとエンド・ユーザーが参照するURLが異なる場合があります。たとえば、ファイアウォール内にある内部Webサイトでのクロールはセキュリティ・チェックなしで行われますが、ユーザーによる問合せがあると、ファイアウォール外の対応するミラーURLを使用する必要があります。このミラーURLは、表示URLと呼ばれます。
別のアクセスURLが提供されないかぎり、デフォルトでは、表示URLがアクセスURLとして処理されます。表示URLはデータ・ソース内で一意である必要があり、2つの異なるアクセスURLを同一の表示URLにすることはできません。
ドキュメント属性(メタデータ)は、ドキュメントのプロパティを示します。各データ・ソースには、ドキュメント属性の独自のセットがあります。値はクロール・プロセス中に取り出され、検索属性の1つにマップされた後、データベースに格納され、索引付けされます。この結果、その属性に基づいてドキュメントを問い合せることができます。異なるデータ・ソースのドキュメント属性を1つの検索属性にマップできます。したがって、複数のデータ・ソースのドキュメントを同じ検索属性に基づいて問い合せることができます。
ドキュメントがWebページの場合、属性はHTTPヘッダーから取得されるか、メタ・タグのHTML内に格納されています。ドキュメント属性は、ドキュメント管理、アクセス制御、バージョン管理などに使用できます。異なるデータ・ソースに、同じ目的で使用される別の属性名を付けることができます。たとえば、versionとrevisionです。また、異なる目的で使用される場合に、同じ属性名を付けることもできます。たとえば、languageという属性名は、あるデータ・ソースでは使用言語として使用され、別のデータ・ソースではプログラミング言語として使用されます。
Oracle Ultra Searchには、デフォルト検索属性(Title、Author、Description、Subject、Mimetype、Language、HostおよびLastModifedDate)があります。これらの属性を検索アプリケーションに組み込むことにより、さらに詳細な検索と検索結果の表示が可能になります。
検索属性は、次の方法で作成することもできます。
タイトル、作成者、説明、件名およびMIMEタイプなどのシステム定義の検索属性。
システム管理者が作成した検索属性。
クローラが作成した検索属性(クローラ・エージェントは、クロール時にドキュメント属性を、同じ名前とデータ型を持つ検索属性にマップします。マップ対象の検索属性が見つからない場合、クローラは、クローラ・エージェントで定義されているドキュメント属性と同じ名前と型で新しい検索属性を作成します)。
注意: デフォルトの検索属性は、決して削除しないでください。 |
検索属性の値リスト(LOV)は、検索の問合せを指定する際に有効です。属性のLOVが使用可能な場合、クローラは、属性値、属性値の表示名およびその変換を含むLOV定義を登録します。
注意: Description検索属性は、ファイルのボディ・テキストから導出されません。そのため、WK$URL.DESCRIPTION 列には、説明用に明示的に設定されたメタ・タグがある場合にのみ、値が移入されます。ボディ・テキストからファイルの説明を判別するためにクローラが必要な場合は、パラメータUSE_DESC_FALLBACK をcrawler.dat ファイルに追加してください。このパラメータは、IMPORT - 文の前に挿入する必要があります。 |
クローラを最初に実行する場合は、データ・ソースに基づいてWebページ、表の行、ファイルなどをフェッチする必要があります。次に、Oracle Ultra Searchの索引にドキュメントを追加します。スケジュールのクロール・プロセスは、次の2つの段階に分けられます。
図7-1および図7-2では、9つの手順でクロール・サイクルのインスタンスを示しています。この例ではWebデータ・ソースを使用していますが、クローラでは他のデータ・ソース・タイプをクロールすることもできます。
図7-1では、クローラおよびクロール・スレッドをアクティブにする方法を示しています。また、クローラ・キューのハイパーテキスト・リンクがナビゲーションを制御する方法も示しています。この図は、手順1から5に対応します。
図7-2では、クローラがWebページをキャッシュする方法を示しています。この図は、手順6から8に対応します。
手順は、次のとおりです。
Oracleは、管理ツールで指定したスケジュールに従って、クローラを起動します。クロールを最初に初期化する場合、URLキューにはシードURLが移入されます。図7-1を参照してください。
クローラはマルチ・クロール・スレッドを初期化します。
クローラ・スレッドは、キュー内の次のURLを削除します。
クローラ・スレッドは、Webからドキュメントをフェッチします。通常、ドキュメントは、テキストおよびハイパーテキスト・リンクを含むHTMLファイルです。
クローラ・スレッドは、ハイパーテキスト・リンクのHTMLファイルをスキャンし、URLキューに新しいリンクを挿入します。ドキュメント表で重複しているリンクは、廃棄されます。
クローラは、ローカル・ファイル・システムのHTMLファイルをキャッシュします。図7-2を参照してください。
クローラは、ドキュメント表にURLを登録します。
クローラ・スレッドは、手順3から繰り返します。
ネットワークの通信量または低速なWebサイトが原因で、手順4に示したドキュメントのフェッチに時間がかかる場合があります。最大スループットの場合、マルチ・スレッドは、指定された時間にページをフェッチします。
ファイル・システムのキャッシュが一杯(最大サイズのデフォルトは20MB)になると、ドキュメントのキャッシュは停止し、索引付けが始まります。この段階で、図7-3に示すように、ドキュメント表が参照するキャッシュ済ファイルにより、Oracle Text索引が補強されます。
URLページが最後のクロール以降に変更された場合、URLページはクロールおよび索引付けされます。クローラは、HTTPのIf-Modified-Sinceヘッダー・フィールドまたはページのチェックサムを使用して、URLページが変更されたかどうかを判断します。すでに存在しないURLはマークされ、索引から削除されます。
変更されたドキュメントを更新するために、クローラは内部のチェックサムを使用して、新しいWebページをキャッシュ済Webページと比較します。変更されたWebページはキャッシュされ、再度索引付けするためにマークされます。
データ同期の手順は、次のとおりです。
Oracleは、管理ツールで指定した同期スケジュールに従って、クローラを起動します。URLキューには、スケジュールに割り当てられたデータ・ソースのURLが移入されます。
クローラはマルチ・クロール・スレッドを初期化します。
各クローラ・スレッドは、キュー内の次のURLを削除します。
各クローラ・スレッドは、Webからドキュメントをフェッチします。通常、ページは、テキストおよびハイパーテキスト・リンクを含むHTMLファイルです。
各クローラ・スレッドは、新しく取得されたページのチェックサムを計算し、キャッシュ・ページのチェックサムと比較します。チェックサムが同じ場合は、ページが廃棄されクローラは手順3に戻ります。それ以外の場合は、次の手順に進みます。
各クローラ・スレッドは、ハイパーテキスト・リンクのドキュメントをスキャンし、URLキューに新しいリンクを挿入します。ドキュメント表にすでにあるリンクは、廃棄されます。
クローラは、図7-2に示すように、ローカル・ファイル・システムのドキュメントをキャッシュします。
クローラは、ドキュメント表にURLを登録します。
ファイル・システムのキャッシュがフルになる、またはURLキューが空になると、Webページのキャッシュは停止し、索引付けが始まります。それ以外の場合、クローラ・スレッドは、手順3から繰り返します。
Oracle Ultra Searchには、Webデータ・ソース・クロールの範囲を制御するための次のメカニズムがあります。
URL境界ルール(ドメイン・ルールとパス・ルール)
Robots.txt
ファイルとロボットMETA
タグ
クロールの深さ
URLリライタAPI
URL境界ルールは、ドメイン・ルールとパス・ルールから構成されます。ドメイン・ルールは、許可されるWebサイトをホスト名の接頭辞または接尾辞を使用して指定します。パス・ルールは、特定のホストに対してURLファイル・バスがアクセス可能かどうかを指定します。ドメイン・ルールとパス・ルールの両方に包含ルールまたは除外ルールを指定できます。除外ルールは常に包含ルールをオーバーライドします。パス・ルールは常にホストに固有のルールです。
たとえば、包含ドメインの末尾がoracle.com
の場合、Oracle Ultra Searchクローラは全世界のオラクル社に属するホストのみをクロールするように制限されます。末尾がoracle.com
のものはすべてクロールされますが、http://www.oracle.com.tw
はクロールされません。新しいシードhttp://www.someurl.com
を使用して包含ドメインをsomeurl.com
に変更すると、すべてのoracle.com
URLがクローラによって削除されます。
除外ドメインがuk.oracle.com
の場合、クローラはイギリスにあるOracleホストをクロールしません。特定のポートを使用して、Webサイトを包含または除外することもできます(デフォルトでは、すべてのポートがクロールされます)。特定のホストに対し、ポート包含ルールまたはポート除外ルールを指定できますが、両方は使用できません。
すべてのURLは、パス・ルールをチェックする前に、ドメイン・ルールを通過する必要があります。パス・ルールを使用すると、クロール領域をさらに制限できます。パス・ルールはホストに固有ですが、ホストごとに2つ以上のパス・ルールを指定できます。たとえば、同じホスト上に包含パス/host/doc
と除外パス/host/doc/private
を含めることができます。パス・ルールは接頭辞ベースであることに注意してください。
現在のリリースでは、正規表現ベースのドメインおよびパス・ルールはサポートされません。
次のルールは、クローラをwww.oracle.com
およびotn.oracle.com
のみクロールするように制限します。また、/products/database/
および/products/ias/
の下のURLのみクロールされ、/products/ias/web_cache/
の下のURLはクロールされません。
Domain inclusion: www.oracle.com Domain inclusion: otn.oracle.com Path inclusion for otn.oracle.com: /products/database/ /products/ias/ Path exclusion for otn.oracle.com: /products/ias/web_cache/
robots.txt
プロトコルは、Web管理者自身のWebサイトにアクセスするスパイダやクローラに対するWeb管理者のパス・ルールです。
次のサンプル/robots.txt
ファイルでは、どのロボットも先頭が/cyberworld/map/
、/tmp/
または/foo.html
のURLにはアクセスしないように指定されています。
# robots.txt for http://www.acme.com/ User-agent: * Disallow: /cyberworld/map/ Disallow: /tmp/ Disallow: /foo.html
デフォルトでは、Oracle Ultra Searchクローラはrobots.txt
プロトコルに従いますが、ユーザーがオーバーライドすることもできます。Webサイトがユーザーの制御下にある場合、User-agent: Ultra Searchという名前のOracle Ultra Searchクローラ・エージェントを指定して、特定のロボット・ルールをクローラに合せて調整できます。次に例を示します。
User-agent: Ultra Search Disallow: /tmp/
ロボットMETA
タグは、Webページに索引を付けるか、またはその中のリンクをたどるかをクローラに指示できます。
クロールの深さは、指定されたシードURLで始まるリンクをクローラがどの深さまでたどるかを制御します。クロールはマルチ・スレッドなので、常に同じ結果を戻す制御ではなく、特定のページまでは様々なルートがある場合があります。
クロールの深さの制限は、指定されたWebデータ・ソース内のすべてのWebサイトに適用されます。
URLリライタAPIは、リンクのフィルタ処理およびリライトを実行するためにJavaクラスとして実装します。クロールされたWebページ内で抽出されたリンクは、チェックするためにこのモジュールに渡されます。これにより、Webページから抽出されたどのリンクが許可され、どのリンクが破棄されるのかを最終制御できます。
以前のリリースのOracle Ultra Search(9.0.2、9.0.3、9.0.4)では、リダイレクトされたURLにも同じ境界チェックが適用されていました。このため、境界ルールの外側にあると、リダイレクトされたURLが拒否されます。リダイレクトされたURLをクロールするためには、境界ルールの範囲にあるようにする必要があります。
9.2.0.5のOracle Application Server 10gおよびOracle Database 11gでは、一時的なリダイレクション(HTTPステータス302、307)の場合、リダイレクトされたURLは常に許可されます。恒久的なリダイレクション(ステータス301)の場合は、リダイレクトされたURLは以前と同様に境界ルールの影響を受けます。
HTTPメタ・タグ・リダイレクションは、常に境界ルールでチェックされます。
クロールのパフォーマンスを向上させるには、データベースとは別の1つ以上のコンピュータ上でOracle Ultra Searchクローラを設定します。これらのコンピュータは、リモート・クローラと呼ばれます。ただし、各コンピュータは、データベース・コンピュータとログおよびメール・アーカイブ・ディレクトリを共有します。
リモート・クローラを構成するには、データベース・ホスト以外のコンピュータに、Oracle Ultra Search中間層を最初にインストールする必要があります。インストール中、リモート・クローラはOracle Ultra Searchシステムに登録され、リモート・クローラ用のプロファイルが作成されます。Oracle Ultra Search中間層のインストール後、Oracle Ultra Search管理ツールにログオンし、リモート・クローラ・プロファイルを編集する必要があります。これによって、クロール・スケジュールへのリモート・クローラの割当てが可能になります。リモート・クローラ・プロファイルを編集するには、管理ツールの「クローラ」タブを使用します。