ロボットはフィルタを使用して、処理するリソースとそのリソースの処理方法を決定します。ロボットがリソースと同時にリソースの参照を検出すると、各リソースにフィルタを適用します。フィルタはそれらのリソースを列挙し、検索サーバーデータベースに格納するリソース記述を生成するかどうかを決定します。
ロボットは 1 つあるいは複数の開始ポイント URL を調べ、フィルタを適用し、それらの URL などを列挙して生成された URL にそのフィルタを適用します。開始ポイント URL は filterrules.conf ファイルで定義されます。
列挙フィルタと生成フィルタはそれぞれ、必須である初期化操作を実行し、現在のリソースに比較テストを適用します。各テストは、リソースを許可または拒否することが目標です。各フィルタにはシャットダウンフェーズも備わっており、クリーンアップ操作を実行します。
リソースが許可されると、フィルタの通過が続行されます。最終的にロボットはそのリソースを列挙し、さらにほかのリソースを検出しようとします。ジェネレータはリソース記述も作成できます。
リソースが否認される場合、そのリソースは拒否されます。拒否されたリソースのフィルタは、それ以上動作しません。
これらの操作は必ずしも連携されていません。リソースには列挙につながるものもあれば、RD 生成につながるものもあります。多くのリソースは列挙にも、RD 生成にもつながります。たとえば、リソースが FTP ディレクトリである場合、一般的にはそのリソース用に RD は生成されません。ただし、ロボットは FTP ディレクトリの個別ファイルを列挙できます。ほかのドキュメントへのリンクを含む HTML ドキュメントは、RD を生成し、また、関連のドキュメントを列挙することもできます。
次の節では、フィルタ処理について説明します。
列挙フィルタ、生成フィルタのどちらにも、フィルタリング処理における 5 つのフェーズがあります。
セットアップ: 初期化処理を行います。ロボットが存在する間、一度だけ発生します。
メタデータ: そのリソースについて利用可能なメタデータに基づき、リソースをフィルタリングします。リソースがネットワークを介して取得される前に、メタデータのフィルタリングがリソースごとに 1 回実行されます。表 19–1 は、共通のメタデータタイプの例を示しています。
メタデータタイプ |
説明 |
例 |
---|---|---|
完全な URL |
リソースの場所 |
http://home.siroe.com/ |
プロトコル |
URL のアクセス部分 |
http、ftp、file |
ホスト |
URL のアドレス部分 |
www.siroe.com |
IP アドレス |
ホストの数値バージョン |
198.95.249.6 |
PATH |
URL のパス部分 |
/index.html |
深さ |
開始ポイント URL からのリンク数 |
5 |
データ: リソースのデータに基づいてリソースをフィルタリングします。データのフィルタリングは、ネットワークを介してデータが取得されたあとにリソースごとに 1 回実行されます。フィルタリングに使用できるデータには、次のものがあります。
content-type
content-length
content-encoding
content-charset
last-modified
expires
列挙: 検査すべきほかのリソースを参照するかどうかを判断するため、現行のリソース中の参照を列挙します。
生成: リソースのリソース記述 (RD) を生成し、検索サーバーデータベースにその RD を保存します。
シャットダウン: 必要な終了操作を実行します。この処理は、ロボットが存在する間、一度だけ発生します。
filter.conf ファイルには、列挙フィルタおよび生成フィルタの定義が含まれています。このファイルには、列挙と生成の両方について、複数のフィルタを含むことができます。ロボットが使用するフィルタは、robot.conf ファイルの enumeration-filter プロパティーおよび generation-filter プロパティーで指定されます。
フィルタの定義には、次のように明確に定義された構造があります。ヘッダー、本文、終了です。ヘッダーは、フィルタの開始を識別し、たとえば次のように名前を宣言します。
<Filter name="myFilter"> |
本文は、セットアップ、テスト、列挙または生成、およびシャットダウン中のフィルタの動作を定義する一連のフィルタディレクティブで構成されています。各ディレクティブでは、関数とその関数のプロパティー (該当する場合) を指定します。
終了は </Filter> によって示されます。
例 19–1 は、enumeration1 という名のフィルタを示しています。
<Filter name="enumeration1> Setup fn=filterrules-setup config=./config/filterrules.conf # Process the rules MetaData fn=filterrules-process # Filter by type and process rules again Data fn=assign-source dst=type src=content-type Data fn=filterrules-process # Perform the enumeration on HTML only Enumerate enable=true fn=enumerate-urls max=1024 type=text/html # Cleanup Shutdown fn=filterrules-shutdown </Filter> |
フィルタディレクティブは、ロボットアプリケーション関数 (RAF) を使用して、操作を実行します。このディレクティブの使用法および実行の流れは、Sun Java System Web Server の obj.conf ファイルの NSAPI ディレクティブおよびサーバーアプリケーション関数 (SAF) とよく似ています。NSAPI、SAF と同様に、pblocks とも呼ばれるプロパティーブロックを使用して、データは格納および送信されます。
6 つのロボットディレクティブ、または RAF クラスが、「リソースフィルタリング処理」に示したフィルタリングのフェーズや操作に対応しています。
Setup
Metadata
Data
Enumerate
Generate
Shutdown
各ディレクティブは、独自のロボットアプリケーション関数を持っています。たとえば、Metadata ディレクティブおよび Data ディレクティブではフィルタリング関数、Enumerate ディレクティブでは列挙関数、Generate ディレクティブでは生成関数を使用します。
ロボットアプリケーションの組み込み関数と、独自のロボットアプリケーション関数を記述する手順については、『Sun Java System Portal Server 7.1 Developer's Guide』を参照してください。
ほとんどの場合、管理コンソールを使用すると、ほとんどのサイト定義ベースのフィルタを作成できます。修正が必要な場合は、filter.conf ファイルおよび filterrules.conf ファイルを変更することができます。これらのファイルは、/var/opt/SUNWportal/searchservers/searchserverid/config ディレクトリにあります。
より複雑なプロパティーのセットを作成するには、ロボットが使用する設定ファイルを編集します。
フィルタを記述または変更する場合は、次の順序に注意してください。
ディレクティブの実行 (特に各フェーズで使用可能な情報)
filterrules.conf のフィルタルール
次も実行できます。
robot.conf ファイルでプロパティーを変更する。
filter.conf ファイルでロボットアプリケーション関数を変更する。
独自のロボットアプリケーション関数を作成する。
詳細については、『 Sun Java System Portal Server 7.1 Developer's Guide』を参照してください。