ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Portal管理者ガイド
11gリリース1 (11.1.1)
B61385-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Oracle Portalの検索機能の構成

この章では、Oracle Portalでの検索機能の設定方法について説明します。これには、Oracle Textの設定方法とOracle Text索引の管理方法も含まれます。

この章の内容:

10.1 Oracle Portalの検索オプション

Oracle Portalは、必要に応じてカスタマイズできる強力な検索機能を提供します。堅牢な組込みの検索ポートレットにより、ポートレット・リポジトリ、ポータル・ページおよび外部サイトの検索を実行できます。

さらに、HTML、XML、PDF、ワープロ書式、スプレッドシート書式、プレゼンテーション書式、その他の一般的なビジネス書式などを含む、100種類を超えるドキュメント・タイプを検索できます。

この項では、Oracle Portalで利用できる検索オプション、および最適なオプションを選択する方法について説明します。

10.1.1 Oracle Portalの検索

Oracle Portalには、Oracle Portalリポジトリ内に格納、管理されているコンテンツを検索するための組込み機能のセットがあります。これらの機能は、様々な方法で構成できる次の4つの検索ポートレットに組み込まれています。

  • 「基本検索」 - このポートレットでは、簡単なキーワード検索が可能です。

  • 「拡張検索」 - このポートレットでは、複数の属性値の演算子を含む、より詳細な検索条件を入力できます。

  • 「カスタム検索」 - このポートレットは、任意にカスタマイズでき、結果を適切に表示する定義済の検索など、ニーズに合せた検索ポートレットを設計できます。このポートレットは、「基本検索」および「拡張検索」ポートレットのスーパーセットのため、必要に応じてこれらのポートレットと同様の外観および動作となるよう構成可能です。

  • 「保存された検索」 - このポートレットでは、保存された検索を繰り返すことができます。

これらのポートレットによる検索では、Oracle Portalリポジトリ内のコンテンツに関連付けられたテキスト・タイプのすべてのメタデータが検索されます。たとえば、表示名、キーワード、説明、その他の類似属性などです。

Oracle Textは、デフォルトでOracle Portalで有効になっているため、ポートレットではメタデータ以外にポータルのコンテンツも検索できます。


注意:

これは、ポートレットのコンテンツには適用されません。ポートレット・コンテンツは索引を作成できないため、検索することもできません。


つまり、Oracle Portalの検索ポートレットでは、次のものも検索対象になります。

  • ドキュメントとファイルおよびURLアイテム - バイナリ形式のファイルとURLアイテムは、Oracle Textで絞込みできるファイル形式であれば、索引を作成できます。

  • URL (URL属性内の)が指定するWebページ - コンテンツはプレーン・テキストまたはHTMLである必要があります。


注意:

AND検索演算子(「すべての語を含む」「すべての語に部分的に一致する」「すべての語にあいまい一致する」など)を使用して複数の検索文字列を指定した場合は、それらすべての文字列が同じ検索索引内に出現する場合にのみ一致となります。たとえば、weights aerobicsと入力して「すべてを含む」演算子を選択したとします。検索結果が返されるのは、この2つの語がアイテムのメタデータ、URLコンテンツまたはドキュメント・コンテンツで検出された場合のみです。weightsがURLコンテンツで検出され、aerobicsがドキュメント・コンテンツで検出された場合は一致したことになりません。


Oracle Portalで使用するOracle Textの構成方法の詳細は、第10.2.2項「Oracle PortalでのOracle Textオプションの構成」を参照してください。Oracle Text、Oracle Text索引の管理方法およびトラブルシューティングの情報の詳細は、第10.3項「Oracle Text」を参照してください。

Oracle Portalの検索ポートレットの構成方法の詳細は、第10.2.1項「Oracle Portal検索ポートレットの構成」を参照してください。Oracle Portal検索ポートレット、Oracle Portalページへの検索機能の追加方法の詳細は、『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。

Oracle Textの無効化

アウト・オブ・ボックスのOracle Textは有効化されています。Oracle Textを無効化することはお薦めしませんが、ポータルでOracle Portalリポジトリ・コンテンツの全テキスト検索を必要としない場合やそのメリットがない場合は、Oracle Textを無効にできます。詳細は、第10.3.1.1項「Oracle Textを無効にした検索」を参照してください。

検索結果とコンテンツのセキュリティ

Oracle Portalの検索結果のページには、検索基準に一致するアイテム、ページ、カテゴリまたはパースペクティブが表示されます。詳細は、第10.1.3項「デフォルトの検索機能」を参照してください。検索結果に、次のものは表示されません。

  • 表示する権限のないコンテンツ。

  • 期限切れ、またはまだ公開されていないコンテンツ。

  • テンプレートから生成されたページ・コンテンツ。

  • ポートレット・インスタンスまたはポータル・スマート・リンク

  • 複数バージョンのアイテム(バージョニングが有効な場合、検索結果には現在のバージョンのアイテムのみが返されます)

ページ設計者は、各検索結果と関連するオブジェクトへのリンクを表示するかどうかを選択できます。たとえば、アイテムに関連するページ・グループ、ページ、カテゴリおよびパースペクティブへのリンクを表示できます。ただし、ユーザーに適切なアクセス権限が付与されていない場合、リンクをクリックしてオブジェクトにアクセスすることは、拒否されます。

10.1.2 Oracle Secure Enterprise Search

Oracle Secure Enterprise Search (SES)は、Oracle Portalリポジトリなど、様々なコンテンツ・リポジトリおよびデータ・ソースに対するエンタープライズ検索機能を提供します。Oracle Secure Enterprise Searchには、Oracle Portalページに埋め込むことができるセキュアな検索ポートレットが用意されています。

このポートレットから、ユーザーが検索文字列を入力して検索を行うと、構成されたすべてのデータ・ソースのコンテンツが含まれる1つの結果セットが返されます。Oracle Portalがデータ・ソースの1つとして構成されている場合、検索を実行すると、パブリック・コンテンツ、およびユーザーが表示権限を持つプライベート・コンテンツが返されます。

OTNを参照

Oracle Secure Enterprise Searchの構成手順の詳細は、Oracle Technology Network (OTN)(http://www.oracle.com/technology/products/oses/index.html)から入手できる『Oracle Secure Enterprise Search管理者ガイド』を参照してください。

Oracle Secure Enterprise Searchの概要の詳細は、第10.4項「Oracle Secure Enterprise Search」を参照してください。

10.1.3 デフォルトの検索機能

Oracle Portalの標準インストールの後、すぐにOracle Portalの検索機能を使用できます。追加の構成をせずに、組込みのOracle Portal検索ポートレットのいずれかをページに配置し、ポータル・コンテンツの検索に使用できます。

インストール時に、Oracle Textの索引が作成され、同期化されると、ポータルでOracle Textの検索が有効になります。ただし、新しいまたは変更されたコンテンツ(アイテム、ページ、カテゴリ、パースペクティブ)は、Oracle Textの索引が再び同期化されるまで、検索結果として返されないことに注意する必要があります。第10.3.5.1項「Oracle Text索引の同期化」を参照してください。

デフォルトでは、Oracle Textの索引はwwv_context.syncをコールするジョブによって1時間おきに同期化されます。使用するポータルにデフォルトの同期化の間隔が適していない場合は、いつでも変更できます。詳細は、第10.3.5.5項「Oracle Text索引の同期化の頻度の決定」を参照してください。

Oracle Database 11gを使用している場合、ポータル・オブジェクトが追加、変更または削除されるたびに、Oracle Text索引が自動的に同期化されるように指定できます。この機能は、新しく追加または変更されたコンテンツをただちに検索可能にする必要のあるポータル・アプリケーションで役立ちます。詳細は、第10.3.5.2項「Oracle Text索引のコミット時の同期化」を参照してください。


注意:

Oracle Textで提供される追加機能を使用しない場合は、この機能を無効にできます。第10.2.2.1項「Oracle PortalでのOracle Textの有効化と無効化」を参照してください。


表10-1は、その他のデフォルトの検索設定を示しています。これらの値の変更方法の詳細は、第10.2項「Oracle Portalの検索オプションの構成」を参照してください。

表10-1 デフォルトの検索設定

検索設定オプション デフォルト

結果ページ - 基本検索ポートレットおよび基本検索ボックス・アイテム

基本検索結果ページ

結果ページ - 拡張検索、カスタム検索および保存された検索ポートレット

検索結果ページ

拡張検索リンク

拡張検索ページ

インターネット検索エンジン・リンク

なし

ページに表示するヒット件数

20

Oracle Text


有効

Oracle Text - テーマと要旨

無効

Oracle Text - テキストの色を強調

デフォルト

Oracle Text - テキストのスタイルを強調

プレーン

Oracle Text - ベースURL

http://<host>:<port>/portal/pls/<dad>


次の図は、デフォルトの検索ポートレットおよびページを示しています。

図10-1 Oracle Portalの「基本検索」ポートレット

図10-1の説明が続きます
図10-1「Oracle Portalの「基本検索」ポートレット」の説明

図10-2 Oracle Portalの「基本検索結果ページ」

図10-2の説明が続きます
図10-2「Oracle Portalの「基本検索結果ページ」」の説明

図10-3 Oracle Portalの「拡張検索」ポートレット

図10-3の説明が続きます
図10-3「Oracle Portalの「拡張検索」ポートレット」の説明

図10-4 Oracle Portalの「カスタム検索」ポートレット

図10-4の説明が続きます
図10-4「Oracle Portalの「カスタム検索」ポートレット」の説明

図10-5 Oracle Portalの「検索結果ページ」

図10-5の説明が続きます
図10-5「Oracle Portalの「検索結果ページ」」の説明

図10-6 Oracle Portalの「保存された検索」ポートレット

図10-6の説明が続きます
図10-6「Oracle Portalの「保存された検索」ポートレット」の説明

10.1.4 使用する検索オプションの決定

Oracle Portal内での検索の構成方法の選択は、検索の目的を慎重に検討し、ポータル・コンテンツについて理解することから始まります。主な考慮事項の一部を次に示します。

  • 検索の範囲 - ポータルの検索から返される結果を、Oracle Portalリポジトリ内で管理されるコンテンツに制限するのか、それともその他のリポジトリからの結果を返すようにするのか。

  • 検索のレベル - ドキュメント・コンテンツの全テキストの索引作成が必要なのか、それともメタデータのみの索引作成で十分なのか。

  • コンテンツのセキュリティ・ポリシーとポータル・ユーザー・プロファイル - 検索は、主にパブリック・コンテンツを検索するパブリックの認証されていないユーザーを対象にするのか、それともコンテンツに対して様々なレベルのアクセス権限を持つ個々のユーザーを対象にするのか。

  • 拡張検索機能 - 結果を関連性に基づいて整列し、ドキュメントのテーマと要旨、およびOracle Textのその他の機能を表示する機能をユーザーに提供することが重要かどうか。

  • 管理 - 索引、データ・ソースなどの管理および維持にどのぐらいの時間を費やすことができるか。

表10-2を使用して、検索要件を満たす最適な検索構成を選択します。

表10-2 Oracle Portalの検索オプション


Oracle Portal (Oracle Textが無効) Oracle Portal (Oracle Textが有効) Oracle Secure Enterprise Search

検索の範囲

Oracle Portalリポジトリのみ。

Oracle Portalリポジトリのみ。

Oracle Portalリポジトリおよびその他のリポジトリ。

検索のレベル

Oracle Portalメタデータのみ。

全テキスト索引。

全テキスト索引。

コンテンツのセキュリティとユーザー・プロファイル

検索結果にセキュアなパブリック・コンテンツを返します。

検索結果にセキュアなパブリック・コンテンツを返します。

検索結果にセキュアなパブリック・コンテンツを返します。

拡張検索機能

いいえ

はい

はい

管理

最小限

全テキスト索引を維持します。

全テキスト索引を維持し、データ・ソースを構成します。


10.1.5 Oracle Secure Enterprise SearchとOracle Portal検索の違い

この項では、Oracle Secure Enterprise SearchとOracle Portal検索の主な違いを中心に説明します。

  • パブリック・コンテンツの収集は、Oracle Ultra Searchでのみ可能です。

    Oracle Portalは、Oracle Ultra Searchにファイル・システムとして公開されます。フォルダのコンテンツを表示するには、そのフォルダをパブリックにする必要があります。パブリックにしないと、そのフォルダからも、そのフォルダのサブフォルダ階層からもコンテンツを収集できません。コンテンツを作成してそれをパブリックにした場合でも、その索引を作成するには、そのコンテンツを格納するすべてのフォルダをパブリックにする必要があります。

  • Oracle Secure Enterprise Searchはページとアイテムを1つのリストとして返します。

    Oracle Secure Enterprise Searchは、Oracle Portalのページとアイテムを、メタデータとコンテンツを含むリソースとして認識します。言い換えれば、収集して索引を作成し、検索結果を返し、視覚的に表現する対象となります。つまり、Oracle Secure Enterprise Searchは、ページとアイテムの両方を含む検索結果のリストを返すことができます。Oracle Portal検索は、データのタイプ(ページ、アイテム、カテゴリおよびパースペクティブ)を区別して検索するため、一度に1つのタイプのデータのみを検索できます。Oracle Secure Enterprise Searchの場合は、カテゴリとパースペクティブを検索可能なエンティティとして区別しないため、特定のパースペクティブまたはカテゴリを含むアイテムとページを(Oracle Portal検索と同様に)検索できます。

  • Oracle Secure Enterprise Searchは、メタデータ以外に、表示されているページのコンテンツを検索します。

    Oracle Portal検索は、ページとアイテムのメタデータを検索します。Oracle Secure Enterprise Searchクローラは、表示されているコンテンツに加えてメタデータを対象にします。つまり、Oracle Secure Enterprise Searchは、Oracle Portal検索が結果を返さないときでも、結果を返すことができます。

  • Oracle Portal検索では、いくつかのアイテム・タイプが除外されます。

    Oracle Portal検索は、次のベース・アイテム・タイプのアイテムのみを返すことができます。

    • <なし>(ベース・アイテム・タイプがない)

    • ベース・ファイル

    • ベースURL

    • ベース・テキスト

    • ベースPL/SQL

    • ベース・ページ・リンク

    • ベース・イメージ

    • ベース・イメージ・マップ

    Oracle Secure Enterprise Searchは、ベース・アイテム・タイプに関係なく、アイテムのメタデータとともに、アイテムがページに表示されるときのアイテム・タイプ表現に基づいて、索引を作成します。ページの解釈に基づいて索引が作成されるためです。つまり、バナー、テンプレート・アイテム、ログイン/ログアウトのリンクなど、ページ上のすべての静的コンテンツと動的コンテンツの索引が、Oracle Secure Enterprise Searchによって作成されます。

  • Oracle Textとスコア計算システム

    OTNを参照

    Oracle Secure Enterprise SearchとOracle Portal検索は、どちらもOracle Textを使用してコンテンツの索引を作成しますが、その実装方法は異なります。さらに、Oracle Secure Enterprise Searchは、Oracle Portal検索と異なるスコア計算システムを使用し、カスタマイズすることもできます。詳細は、OTN(http://www.oracle.com/technology/products/oses/index.html)から入手できる『Oracle Secure Enterprise Search管理者ガイド』を参照してください。

    どちらのスコア計算システムでも、タイトルに検索文字列が見つかった場合に重み付けされるため、タイトル内でのヒット数は、ドキュメント・コンテンツ内でのヒット数よりも高く計算されます。Oracle Portalの検索では、タイトルに複数の文字列が見つかった場合はさらに高いスコアが付けられます。また、検索条件に近い複数の文字列や最もヒット数が多い検索結果に対しても重み付けされます。

  • Oracle Secure Enterprise Searchは外部コンテンツを収集します

    Oracle Secure Enterprise Searchは、Oracle Portalの外部のコンテンツ(外部Webソース)を収集できます。Oracle Portalの検索は、内部コンテンツに制限されます。

10.2 Oracle Portalの検索オプションの構成

Oracle Portalの検索機能は、デフォルトでインストールされるので、すぐに検索機能を使用できます。インストール時のデフォルトの詳細は、第10.1.3項「デフォルトの検索機能」を参照してください。

この項では、ポータル管理者がすべての検索ポートレットに影響する次の検索機能を構成する方法について説明します。

10.2.1 Oracle Portal検索ポートレットの構成

この項では、すべてのOracle Portal検索ポートレットに影響する次の検索機能を構成する方法について説明します。

10.2.1.1 検索結果ページの選択

次の場所から検索した結果の表示に使用するページを指定できます。

  • 「基本検索」ポートレットおよび「基本検索」ボックス・アイテム

  • 「拡張検索」、「カスタム検索」および「保存された検索」ポートレット

異なる検索結果ページを選択すると、新しい検索ポートレットと既存の検索ポートレットの両方に適用されます。

OTNを参照

必要に応じて、特定の「カスタム検索」ポートレットの設定をオーバーライドできます。「検索結果を表示する場所を指定してください。」オプション(「デフォルトの編集: 結果の表示」タブ)が「デフォルト検索結果ページ」に設定されている場合は、「カスタム検索」ポートレットはここで指定された結果ページのみを使用します。「カスタム検索」ポートレットのオプションの設定方法の詳細は、OTN(http://www.oracle.com/technology/products/ias/portal/documentation.html)から入手できる『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。

Oracle Portal検索ポートレットの検索結果ページを指定するには、次の手順を実行します。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. 「基本検索ポートレットおよび基本検索ボックス・アイテム」の「検索結果ページ」セクションで、適切な検索結果ページを選択します。

    検索ポートレットを含む任意のポータル・ページを選択できます。検索ポートレットのないページを選択した場合、結果は表示されません。デフォルトは、「基本検索結果ページ」です。

  4. 「拡張検索、カスタム検索および保存された検索ポートレット」に、適切な検索結果ページを選択します。

    検索ポートレットを含む任意のポータル・ページを選択できます。検索ポートレットのないページを選択した場合、結果は表示されません。デフォルトは、「検索結果ページ」です。

  5. 「OK」を選択します。


注意:

ページ・キャッシュが有効になっている場合でも、既存の検索ポートレットに変更がすぐに表示されないことがあります。すべての検索ポートレットのキャッシュは、24時間ごとに自動的に消去されます。これらのキャッシュは、Oracle Fusion Middleware Controlの「Webキャッシュ管理」ページから手動で消去することもできます。第8.1項「Oracle Enterprise Manager 11g Fusion Middleware Controlの使用」を参照してください。


選択したページが後で削除されると、関連する「ページ」フィールドは空になります。別のページを選択し、「OK」をクリックします。「取消」をクリックすると、検索操作後に「ページが見つかりません。」というエラーが表示されます。

10.2.1.2 ページに表示する検索結果の数の制限

検索ポートレットに表示する結果の数を制限できます。この制限は、「基本検索」、「拡張検索」および「カスタム検索」ポートレットに適用されます。

個々の「基本検索」または「拡張検索」ポートレットに対してこの制限の変更はできません。ただし、必要に応じて、「カスタム検索」ポートレットの設定をオーバーライドできます。

検索によって返される結果の数がこの制限を超える場合、検索結果ページには、すべての結果が表示できるように図10-7に示すような「次へ」および「前へ」アイコンが表示されます。「カスタム検索」ポートレットでは、これらのアイコンは必要に応じて非表示にできます。

OTNを参照

「カスタム検索」ポートレットのオプションを設定する方法の詳細は、OTN(http://www.oracle.com/technology/products/ias/portal/documentation.html)から入手できる『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。

図10-7 検索ポートレットの「ページに表示するヒット件数」の設定

図10-7の説明が続きます
図10-7「検索ポートレットの「ページに表示するヒット件数」の設定」の説明

たとえば、「ページに表示するヒット件数」の制限を10にした場合、最初の検索結果ページには最初の10件の結果が表示され、以降の各ページには最初の10件に続く結果が10件ずつ表示されます。


注意:

制限を変更した場合、新しい値は既存の検索ポートレットではなく、新しい検索ポートレットにのみ影響します。


1ページ当たりの検索結果の数を指定するには、次の手順を実行します。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. 「検索のプロパティ」セクションの「ページに表示するヒット件数」に、1ページに表示する検索結果の数を入力します。

  4. 「OK」をクリックします。

10.2.1.3 「拡張検索」リンクの選択(「基本検索」および「カスタム検索」ポートレット)

通常、拡張検索では、追加の検索条件を指定できます。たとえば、図10-8を参照してください。

図10-8 「基本検索」および「カスタム検索」ポートレット上の「拡張検索」リンク

図10-8の説明が続きます
図10-8「「基本検索」および「カスタム検索」ポートレット上の「拡張検索」リンク」の説明

「拡張検索」リンクは、外部サイト、別のポータル・ページ、またはOracle Portal内のパッケージ・コールへリンクできます。

OTNを参照

拡張検索リンクは「基本検索」ポートレットに表示されます。オプションとして、このリンクを「カスタム検索」ポートレットに表示できます。「カスタム検索」ポートレットのオプションを設定する方法の詳細は、OTN(http://www.oracle.com/technology/products/ias/portal/documentation.html)から入手できる『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。

すべての「基本/カスタム検索」ポートレット・インスタンスに対して、「拡張検索リンク」のリンク先を指定できます。新しい「拡張検索リンク」を指定すると、拡張検索リンクが表示される新規および既存の検索ポートレットの両方に適用されます。

拡張検索リンクの詳細を入力するには、次の手順を実行します。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. 「拡張検索リンク」セクションで、次のいずれかを実行します。

    • 「拡張検索」のリンク先の「ページ名」を指定します。

      デフォルトは「拡張検索ページ」です。このページには、Oracle Portalに付属している「拡張検索」ポートレットがあります。このページとして、拡張検索のオプションを表示する任意のポータル・ページを選択でき、そのページにはOracle Portalの検索ポートレットを配置する必要はありません。たとえば、使用しているPortal内にJSPページがある場合は、拡張検索のオプションを持つJSPページを使用できます。

      選択したページが後で削除されると、このフィールドは空になります。別のページを選択し、「OK」をクリックします。「取消」をクリックしても、すべての「拡張検索」リンクは削除されたページを指定したままになります。

    • 「拡張検索」リンクの「URL」を指定します。

      使用するURLを入力します。ポータル全体で拡張検索に使用するカスタマイズした検索エンジンを作成した場合は、ここにそのリンクを指定できます。

      絶対URLまたは相対URLを指定できます。たとえば、http://www.myfavoritesearchengine.comを指定すると、このインターネット検索サイトへのリンクが直接作成されます。

      相対URL(つまり、ポータル・パッケージ)を入力する場合は、ここで指定した値はOracle PortalスキーマURLに追加されるため、その結果、ポータル・パッケージがコールされます。指定した値が/で始まるかどうかによって、次のように値が追加されます。

      /で始まる場合、このURLは、http://<webserver>:<port>//<PORTALSCHEMA>.my_search_package.my_search_method>のようになります。

      値のみを指定する場合、このURLは、http://<webserver>:<port>/portal/pls/<dad>//<PORTALSCHEMA>.my_search_package.my_search_methodのようになります。

  4. 「OK」を選択します。


注意:

ページ・キャッシュが有効になっている場合でも、既存の検索ポートレットに変更がすぐに表示されないことがあります。すべての検索ポートレットのキャッシュは、24時間ごとに自動的に消去されます。これらのキャッシュは、Oracle Fusion Middleware Controlの「Webキャッシュ管理」ページから手動で消去することもできます。第8.1項「Oracle Enterprise Manager 11g Fusion Middleware Controlの使用」を参照してください。


10.2.1.4 インターネット検索エンジンの選択(「拡張検索」および「カスタム検索」ポートレット)

インターネット検索エンジン・リンクは「拡張検索」ポートレットに表示されます。したがって、ユーザーがOracle Portalを検索したときに必要な情報を見つけることができなかった場合は、インターネット検索エンジンを使用して検索対象を広げることができます。図10-9を参照してください。

図10-9 「拡張検索」および「カスタム検索」ポートレット上の「インターネット検索エンジン」リンク

図10-9の説明が続きます
図10-9「「拡張検索」および「カスタム検索」ポートレット上の「インターネット検索エンジン」リンク」の説明

OTNを参照

オプションとして、このリンクを「カスタム検索」ポートレットに表示できます。「カスタム検索」ポートレットのオプションを設定する方法の詳細は、OTN(http://www.oracle.com/technology/products/ias/portal/documentation.html)から入手できる『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』を参照してください。

インターネット検索エンジンのURL、およびユーザーがインターネット検索エンジンにアクセスするためにクリックするリンク・テキストを指定すると、インターネット検索リンクを表示するすべての新規および既存の拡張/「カスタム検索」ポートレット・インスタンスに適用されます。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. 「インターネット検索エンジン」セクションの「URL」に、インターネット検索エンジンのURLを入力します。たとえば、「http://www.myinternetsearch.com」と入力します。

    URLは、完全な形式である必要があります。http://と関連パラメータをすべて含んでいる必要があります。

  4. 「リンク・テキスト」に、指定したインターネット検索エンジンにアクセスするためのテキストを入力します。たとえば、「MySearch」などです。

    「MySearch」と入力した場合は、「拡張検索」ポートレット、またはオプションで「カスタム検索」ポートレットにリンクとしてこのテキストが表示されます。図10-9を参照してください。

  5. 「OK」を選択します。

インターネット検索エンジンのプロパティ(URLとリンク・テキスト)を指定しない場合は、「拡張検索」または「カスタム検索」ポートレットにもインターネット検索エンジンへのリンクは表示されません。


注意:

ページ・キャッシュが有効になっている場合でも、既存の検索ポートレットに変更がすぐに表示されないことがあります。すべての検索ポートレットのキャッシュは、24時間ごとに自動的に消去されます。これらのキャッシュは、Fusion Middleware Controlの「Webキャッシュ管理」ページから手動で消去することもできます。第8.1項「Oracle Enterprise Manager 11g Fusion Middleware Controlの使用」を参照してください。


10.2.2 Oracle PortalでのOracle Textオプションの検索

この項ではOracle Portalで次のOracle Text機能を構成する方法について説明します。


注意:

ページ・キャッシュが有効になっている場合でも、既存の検索ポートレットにOracle Text設定への変更がすぐに表示されないことがあります。すべての検索ポートレットのキャッシュは、24時間ごとに自動的に消去されます。これらのキャッシュは、Fusion Middleware Controlの「Webキャッシュ管理」ページから手動で消去することもできます。第8.1項「Oracle Enterprise Manager 11g Fusion Middleware Controlの使用」を参照してください。


Oracle Text、Oracle Text索引の管理方法およびトラブルシューティングの情報の詳細は、第10.3項「Oracle Text」を参照してください。

10.2.2.1 Oracle PortalでのOracle Textの有効化と無効化

Oracle Textを使用することで、Oracle Portalの検索機能が拡張されます。第10.1.1項「Oracle Portalの検索」を参照してください。アウト・オブ・ボックスのOracle Textは常に有効化されています。Oracle Textを無効化することはお薦めしませんが、ポータルでOracle Portalリポジトリ・コンテンツの全テキストの索引作成を必要としない場合やそのメリットがない場合は、Oracle Textを無効にできます。第10.2.2.1項「Oracle PortalでのOracle Textの有効化と無効化」も参照してください。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. Oracle Textを使用するには、Oracle Portalを検索するときに「Oracle Text検索を使用可能にする」を選択します。

    Oracle Textを無効にするには、このオプションを選択解除します。


    注意:

    「Oracle Textはインストールされていません」というメッセージが表示される場合は、Oracle Textがデータベースにインストールされていないので、Oracle Portalでは使用できません。Oracle Textをインストールするようデータベース管理者に依頼してください。インストールしたら、SQL*Plusで次のコマンドを実行して、Oracle Textロールを作成する必要があります。

    inctxgrn.sql

    このファイルは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。

    PORTALスキーマのユーザー名とパスワードを使用してログインします。Oracle Text索引も作成する必要があります。詳細は、第10.3.4項「Oracle Text索引の作成および削除」を参照してください。


  4. 「OK」をクリックします。

10.2.2.2 Oracle Text検索結果オプションの設定

Oracle Textを有効にすると、検索結果として返されるアイテム(ドキュメントやファイル)とともに追加の情報を表示できます。返される各アイテムに対して、次を表示できます。

  • 主要なテーマがグラフに表示されます。テーマは、最も頻繁に使用されている名詞と動詞を示します。

  • コンテンツに関する簡単なサマリー(要旨)が表示されます。要旨は、そのコンテンツの名詞と動詞の使用頻度に基づいて生成されます。

  • HTML形式。

  • HTML形式のファイル。検索文字列を特定の色またはフォントで強調します。

テーマおよび要旨はオプションであり、HTMLの強調は次のようにカスタマイズできます。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. 「テーマと要旨を使用可能にする」を選択して、検索によってアイテムが返されるたびにテーマと要旨を作成します。


    注意:

    テーマと要旨を利用できない言語があります。


  4. 「テキストの色を強調」には、検索によって返されるアイテムをHTML形式で表示するときに、検索文字列を強調する色を選択します。

  5. 「テキストのスタイルを強調」には、検索によって返されるアイテムをHTML形式で表示するときに、検索文字列に適用するスタイルを選択します。

  6. 「OK」をクリックします。

10.2.2.3 Oracle TextのベースURLの設定

Oracle Textは、相対URLを完全修飾された絶対URLに解決するためにベースURLを必要とします。詳細は、第10.3.6.1項「相対URL」を参照してください。

Oracle TextのベースURLを指定するには、次の手順を実行します。

  1. 「サービス」ポートレットで、「グローバル設定」をクリックします。

    デフォルトでは、「サービス」ポートレットは、「Portalビルダー」ページの「管理」タブの「ポータル」サブタブにあります。

  2. 「検索」タブをクリックします。

  3. http://<host>:<port>/portal/pls/<dad>という書式で、「Oracle TextのベースURL」を入力します。

    たとえば、http://myportal.com:4000/portal/pls/designのようになります。

    値を指定しない場合は、どの相対URLにも索引が作成されないので、相対URLが指すURLコンテンツは検索できません。

  4. 「OK」をクリックします。

10.2.2.4 Oracle Textのプロキシ設定の構成

Oracle Textでは、Oracle Portalのプロキシ・サーバーの設定を使用してURLコンテンツにアクセスします。これは、Oracle Portalがファイアウォールの内側にあり、かつURLアイテムがこのファイアウォール外を指定している場合に必要となります。詳細は、第10.3.6.4項「URLの索引のプロキシ設定」を参照してください。

Oracle Portalのグローバル・プロキシ設定を構成する方法の詳細は、第6.5項「プロキシ・サーバーを使用するためのOracle Portalの構成」を参照してください。

10.2.3 Oracle PortalでのOracle Secure Enterprise Searchオプションの構成

第10.4項「Oracle Secure Enterprise Search」を参照してください。

10.3 Oracle Text

Oracle Textは、Oracle Databaseに強力なテキスト検索とインテリジェントなテキスト管理を追加します。Oracle Portalは、Oracle Textの機能を使用して検索機能を拡張しています。

アウト・オブ・ボックスのOracle Textは常に有効化されています。ただし、Oracle PortalでOracle Textを使用する機能はオプションであり、ポータル管理者が無効にできます。詳細は、第10.3.1項「Oracle Textを有効または無効にした場合のOracle Portal検索の理解」を参照してください。

Oracle PortalでOracle Textを使用する方法について、次の項で説明します。

OTNを参照

詳細は、OTN(http://www.oracle.com/technology/)から入手できるOracle Textのドキュメントを参照してください。

10.3.1 Oracle Textを有効または無効にした場合のOracle Portal検索の理解

アウト・オブ・ボックスのOracle Textは常に有効化されています。Oracle Textを無効化することはお薦めしませんが、ポータルでOracle Portalリポジトリ・コンテンツの全テキストの索引作成を必要としない場合やそのメリットがない場合は、Oracle Textを無効にできます。

Oracle Textを無効にする手順の詳細は、第10.2.2.1項「Oracle PortalでのOracle Textの有効化と無効化」を参照してください。

10.3.1.1 Oracle Textを無効にした検索

Oracle Textが無効のときに基本検索を実行(検索文字列のみを入力)する場合、次のメタデータが検索されます。

  • アイテム属性(表示名、説明、キーワード、作成者)

  • ページ属性(表示名、説明、キーワード)

  • カテゴリおよびパースペクティブ属性(表示名、説明)

基本検索では、カスタム属性が検索されません。

検索演算子「すべての語を含む」を使用して複数の検索文字列を指定した場合は、それらすべての文字列が同じ属性内に出現する場合にのみ一致となります。たとえば、weights aerobicsと入力した場合、これら2つの文字列が、両方とも1つの属性(説明など)内で検出された場合にのみ検索結果が返されます。文字列weightsが説明内に見つかり、aerobicsが表示名内に見つかった場合は、一致となりません。

また、Oracle Textを無効にすると、使用できる検索演算子が限られます。主な検索文字列では、「すべての語を含む」「いずれかの語を含む」「これらの語に完全一致する」という3つの検索演算子しか使用できなくなります。さらに、属性検索で使用できる演算子も限られます。

選択した属性に対して条件を指定する検索(拡張検索)では、選択した属性が照合されます。拡張検索フォームでは、ファイルベースまたはURLベースの属性(URLやファイル名などの生成された属性を含む)は表示されません。Oracle Textを無効にした場合、これらの属性は検索できないためです。同様に、「カスタム検索」ポートレットを編集するページ設計者は、ファイルベースおよびURLベースの属性を検索条件として選択できなくなります。Oracle Textが無効になる前に、検索ポートレットでファイルベースまたはURLベースの属性を指定した場合、Oracle Textが無効になると、それらの属性がグレーのイタリック体で表示されます。

10.3.1.2 Oracle Textを有効にした検索

基本検索を実行するときにOracle Textが有効になっている場合は、カスタム・テキスト属性を含むすべてのテキスト・タイプの属性が検索されます。さらに、ファイルおよびURLアイテムのコンテンツが検索されます。

バイナリ形式のドキュメントとファイルおよびURLアイテムは、Oracle Textで絞込みできるファイル形式であれば検索できます。また、コンテンツがプレーン・テキストまたはHTMLであれば、URL (URL属性で指定)のリンク先であるWebページも検索できます。詳細は、第10.3.3.1項「Oracle Text索引の概要」を参照してください。

10.3.2 Oracle Textの前提条件

Oracle Textは、Oracle Database 11gの標準コンポーネントです。Oracle PortalでOracle Textの機能を使用する場合は、Oracle Textコンポーネントが正しくインストールされ、正常に機能していることが不可欠です。

次のことを確認します。

  • Oracle TextがOracle Portalリポジトリ・データベースにインストールされています。Oracle Portalリポジトリ・データベースにOracle Textのコンポーネントがないと、Oracle Portalリポジトリをインストールできません。これは、Oracle Portalパッケージの中には、Oracle Textコンポーネントが存在するCTXSYSスキーマのctx_ddlパッケージを参照するものがあるからです。

  • Oracle Textのアップグレードが完了しています。特に、データベースのアップグレード時には、Oracle Textに関係する手動の手順が正常に完了していることが不可欠です。

  • Oracle Text AUTO_FILTERのライブラリ・パスが正しく設定されています。AUTO_FILTERが正常に機能するには、ctxhx実行可能ファイル(索引作成時にコールされる)で適切な共有ライブラリをロードできる必要があります。第10.3.3.1項「Oracle Text索引の概要」も参照してください。

    • UNIXプラットフォームの場合は、TNSリスナーとデータベースが起動する環境の両方で、ldが使用するライブラリ・パスにORACLE_HOME/ctx/libを指定しておく必要があります。様々なUNIXプラットフォームに対するライブラリ・パスの環境変数は、次のとおりです。

      Solaris、Tru64 UNIX、Linux → $LD_LIBRARY_PATH

      HP/UX → $SHLIB_PATHおよび$LD_LIBRARY_PATH

      IBM AIX → $LIBPATH

      OTNを参照

      詳細は、OTN(http://www.oracle.com/technology/documentation/)から入手できるOracle Textリファレンスを参照してください。

      Oracle Textの索引作成処理を機能させるには、ライブラリ・パスを変更するたびに、データベースとリスナーの両方を再起動する必要があります。どちらかまたは両方の環境変数が設定されていない場合は、予想どおりに文書に索引が作成されず、表ctx_user_index_errorsに、DRG-11207、ステータス137エラーが多数表示されることがあります。第10.3.12.1項「一般的なドキュメント索引作成エラー」も参照してください。

    • Windowsプラットフォームでは、適切なOracle TextのDLLが、ORACLE_HOME\binに存在します。このパスが環境変数PATHに含まれる、つまりOracleサーバーが起動される環境にあることを確認します。

10.3.3 Oracle Text索引

Oracle PortalでOracle Textの機能を使用する場合は、Oracle PortalスキーマにいくつかのOracle Text索引が必要になります。これらの索引の詳細は、次の項で説明します。

10.3.3.1 Oracle Text索引の概要

必要なOracle Text索引はすべて、パッケージwwv_contextに含まれるプロシージャによってOracle Portalのインストール時に自動的に作成されます。

ポータルのインストール後は、このパッケージ内のプロシージャを、索引の削除や再作成などの索引管理に使用できます。詳細は、第10.3.4.3項「ctxdrind.sqlを使用したすべてのOracle Text索引の削除」および第10.3.4.1項「ctxcrind.sqlを使用したすべてのOracle Text索引の作成」を参照してください。


注意:

Oracle Text索引が存在するときでも、Oracle Textを無効にできます。第10.2.2.1項「Oracle PortalでのOracle Textの有効化と無効化」を参照してください。


表10-3で、必要なOracle Text索引について説明します。

表10-3 Oracle Portalスキーマに含まれるOracle Text索引

索引
Table.column
用途
データストア・タイプ フィルタ・
タイプ
オプションか

WWSBR_CORNER_CTX_INDX

wwpob_page$.ctxtxt

ページ・メタデータの索引作成

ユーザー・データストア

-

いいえ

WWSBR_DOC_CTX_INDX

wwdoc_document$.
blob_content

ドキュメント・コンテンツの索引作成

直接データストア

AUTO_FILTER

はい

WWSBR_PERSP_CTX_INDX

wwv_perspectives.
ctxtxt

パースペクティブ・メタデータの索引作成

ユーザー・データストア

-

いいえ

WWSBR_THING_CTX_INDX

wwv_things.ctxtxt

アイテム・メタデータの索引作成

ユーザー・データストア

-

いいえ

WWSBR_TOPIC_CTX_INDX

wwv_topics.ctxtxt

カテゴリ・メタデータの索引作成

ユーザー・データストア

-

いいえ

WWSBR_URL_CTX_INDX

wwsbr_url$.absolute_url

URLコンテンツの索引作成

URLデータストア

AUTO_FILTER

はい


ほとんどのOracle Text索引では、ユーザー・データストアを使用します。例外は、索引WWSBR_DOC_CTX_INDX(ドキュメント索引)およびWWSBR_URL_CTX_INDX (URL索引)です。

  • ドキュメント索引: 直接データストアを使用します。つまり、wwdoc_document$表のBLOBタイプblob_contentの列に直接保持されるドキュメント・コンテンツに索引を作成します。

  • URL索引: absolute_url列が指す場所から、wwsbr_url$表の行ごとに索引の作成対象とするコンテンツを取り出します。

ドキュメント索引とURL索引の作成は、無効にできます。無効にすることで、検索対象がアイテム、ページ、カテゴリおよびパースペクティブのメタデータのみに限定されるため、ポータル検索の速度と効率性が向上します。第10.3.7項「ドキュメント索引およびURL索引の作成の無効化」を参照してください。

ドキュメント索引とURL索引はどちらもフィルタ(AUTO_FILTER)を使用して、ドキュメントを索引作成に適したプレーン・テキスト形式に変換します。

  • バイナリ・ドキュメントは、プレーン・テキストに変換されます(そのバイナリ形式がAUTO_FILTERでサポートされている場合)。

  • プレーン・テキスト、HTML、XHTML、SGMLおよびXMLドキュメントでは、フィルタが使用されずに索引が直接作成されます。

  • グラフィックのような、索引を作成する必要がないドキュメントはフィルタで無視されます。

第10.3.3.7項「AUTO_FILTERパフォーマンスの最大化」も参照してください。


注意:

Oracle Portalが機能的なAUTO_FILTERの存在しないデータベースにインストールされている場合、ドキュメントおよびURL検索は、AUTO_FILTERなしでは機能しないことから、自動的に無効化されます。第10.3.7項「ドキュメント索引およびURL索引の作成の無効化」も参照してください。


10.3.3.2 Oracle Text索引の設定

Oracle Textでは、設定を使用してOracle Portal向けのOracle Text索引を構成します。これらの設定は、Oracle Portalのスキーマで作成し、そのスキーマで所有します。つまり、設定はCTXSYSスキーマに存在するctx_ddlパッケージを使用して作成され、設定を表すデータは実際にはCTXSYSスキーマ内のリレーショナル表に格納されます。

Oracle Text索引の設定は、索引が作成される前に作成する必要があります。その後の設定に対する変更は、Oracle Text索引を削除して再作成しないと、有効になりません。

Oracle Text索引を作成するためにOracle Portalのインストール時に使用されるOracle Text索引の設定は、パッケージwwv_contextを使用して再作成できます。一部のOracle Text索引の設定は、インストール後にポータル管理者が構成することもできます。たとえば、グローバルOracle Portalのプロキシ設定値は、Oracle TextがOracle Text索引で使用するプロキシ設定の移入に使用されます。

Oracle Text索引は、索引作成の言語面を制御するためにいくつかのレクサー・プリファレンスも使用します。レクサー・プリファレンスは、スクリプトsbrimtlx.sqlによって作成されます。このスクリプトは、レクサー・プリファレンスを再作成するときにいつでも実行できます。このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。

OTNを参照

詳細は、OTN(http://www.oracle.com/technology/)にあるOracle Textのドキュメントを参照してください。

10.3.3.3 データストア・プロシージャ

Oracle9i Database Serverでは、ユーザー・データストアを使用するOracle Text索引ごとに、Oracle TextがインストールされているCTXSYSスキーマにデータストア・プロシージャが作成されます。特定の索引が作成される各行に対し、このプロシージャがコールされます。これらのプロシージャが、次にOracle Portalスキーマのプロシージャをコールします。

データストア・プロシージャには、次のように名前を付けます。

  • WWSBR_THING_CTX_<user_id>

  • WWSBR_CORNER_CTX_<user_id>

  • WWSBR_PERSP_CTX_<user_id>

  • WWSBR_TOPIC_CTX_<user_id>

<user_id>は、Oracle Portalリポジトリのスキーマのuser_id (ALL_USERSビューに表示される)です。同じデータベースに複数のOracle Portalリポジトリが存在する場合は、プロシージャ名が重複することがないようにこの接尾辞が必要です。

なんらかの理由によりこれらのプロシージャが存在しない場合は、Oracle Textは機能しません。これは、たとえば、CTXSYSスキーマが削除され、再インストールされた場合に発生することがあります。この場合は、Oracle Portalスキーマの所有者として、次のようにスクリプトinctxgrn.sqlを実行することによりプロシージャを再インストールできます。

SQL> @inctxgrn.sql

また、このスクリプトは、CTXAPPロールをOracle Portalスキーマに付与します。詳細は、第10.3.3.4項「Oracle PortalスキーマへのCTXAPPロールの付与」を参照してください。このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。

Oracle Database 11gでは、データストア・プロシージャはCTXSYSスキーマ内に作成されません。このプロシージャは、索引を所有するスキーマ(Oracle Portalスキーマ)が所有します。その場合、これらのプロシージャはすべてパッケージwwsbr_ctx_procsの中にあります。

  • wwsbr_ctx_procs.thing_ctx

  • wwsbr_ctx_procs.corner_ctx

  • wwsbr_ctx_procs.perspective_ctx

  • wwsbr_ctx_procs.topic_ctx

プロシージャはOracle Portalスキーマの中にあるため、<user_id>接尾辞は必要ありません。

10.3.3.4 Oracle PortalスキーマへのCTXAPPロールの付与

Oracle Textの機能を使用するためには、CTXAPPロールがOracle Portalスキーマに付与されている必要があります。これは、Oracle Portalのインストール時に自動的に行われ、通常それ以上何も操作する必要はありません。

なんらかの理由によりこの付与が取り消された場合は、Oracle Textは機能しません。たとえば、これはCTXSYSスキーマが再インストールされたときにCTXAPPロールが削除されると、発生することがあります。

必要な付与を元に戻すには、Oracle Portalスキーマの所有者として次のようにスクリプトinctxgrn.sqlを実行します。

SQL> @inctxgrn.sql

このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。このスクリプトは、CTXSYSスキーマで必要なOracle Portalユーザー・データストア・プロシージャも作成します。第10.3.3.3項「データストア・プロシージャ」を参照してください。

10.3.3.5 多言語機能(マルチレクサー)

Oracle Portalでは、Oracle Textのマルチレクサーを使用し、Oracle Portalで言語固有の検索ができます。マルチレクサーは、次のことを行います。

  • 検索の言語面の実行方法を制御します。

  • コンテンツ、アイテム、ページ、カテゴリ、パースペクティブ、およびこれらを翻訳したものが、各言語に適した方法で処理されるようにします。

レクサー・プリファレンスは、すべてのOracle Text索引で使用されるマルチレクサーの構成に使用されます。レクサー・プリファレンスは、スクリプト・ファイルsbrimtlx.sqlによって作成されます。このスクリプトは、ORACLE_HOME\portal\admin\plsql\wwsディレクトリにあります。必要に応じてこれらの設定を変更できますが、変更後は変更を有効にするために、Oracle Text索引をいったん削除してから再作成する必要があります。

OTNを参照

マルチレクサーの詳細は、OTN(http://www.oracle.com/technology/)にあるOracle Textのドキュメントを参照してください。

10.3.3.6 STEM検索

Oracle PortalでOracle Textが有効になっているときは、STEM検索がデフォルトで使用されます。STEM検索を使用すると、指定した文字列と同じ語根を持つ語を検索できます。たとえば、語幹の$singを入力すると、語sang、sung、singにまで問合せが拡張されます。

ただし、STEM検索が使用されるのは、Oracle TextでSTEM検索がサポートされている次のいずれかの言語を使用しているOracle Portalにログインしたときだけです。

AMERICAN ENGLISH
CANADIAN FRENCH
DUTCH
UK ENGLISH
FRENCH
GERMAN DIN
GERMAN
ITALIAN
LATIN AMERICAN SPANISH
MEXICAN SPANISH
SPANISH

その他の言語では、STEM演算子は使用されません。

10.3.3.7 AUTO_FILTERパフォーマンスの最大化

AUTO_FILTERは、PDFドキュメントなどのほとんどのドキュメント形式を、索引に適したプレーン・テキスト形式に変換できる汎用的なフィルタです。Oracle Portalでは、ドキュメント索引とURL索引でのみAUTO_FILTERが使用されます。

索引作成のプロセスでは、AUTO_FILTERによって、ドキュメントとURLコンテンツが次のAUTO_FILTER_FORMAT設定に従って変換されます。

  • BINARY - これらのドキュメントは、プレーン・テキストに変換されます(そのバイナリ形式がAUTO_FILTERでサポートされている場合)。

  • TEXT - これらのドキュメントでは、AUTO_FILTERが使用されずに索引が直接作成されます。たとえば、プレーン・テキスト、HTML、XHTML、SGML、XMLドキュメントなどがあります。

  • IGNORE - イメージなどのドキュメントでは、絞込みや索引作成が行われません。

コンテンツを不必要に絞り込むと、ポータル検索の速度と効率性に悪影響を与えるため、絞込み処理を最適化することが重要です。AUTO_FILTERを最適化する最善の方法は、ポータルにアップロードしたすべてのドキュメントおよびURLコンテンツを、正しいMIMEタイプと文字セットで分類しておくことです。

  • MIMEタイプ - Oracle Portalでは、ドキュメントのMIMEタイプによって、AUTO_FILTER_FORMAT (AUTO_FILTERがドキュメントを絞り込むかどうかの判断に使用する設定)が決まります。たとえば、MIMEタイプのアプリケーションやPDFでアップロードされたドキュメントは、BINARYにマッピングされた後で絞込みが行われます。一方、MIMEタイプのテキストやHTMLでアップロードされたドキュメントは、TEXTにマッピングされ、索引が直接作成されます。MIMEタイプのイメージやGIFでアップロードされた他のドキュメントは、IGNOREにマッピングされます。

  • 文字セット - AUTO_FILTERは、ドキュメント内のデータベースにない文字セットをデータベース用の文字セットに変換できます。これにより、他の文字セットでドキュメントの索引作成および検索を行えます。AUTO_FILTERが文字セットを判別できない場合、またはその文字セットがサポートされていない場合、文字セット変換なしでドキュメントの索引作成が行われます。

AUTO_FILTER_FORMATマッピングを判別するために、ポータルにコンテンツがアップロードされたときにブラウザは次のマッピング・シーケンスを使用します。

ファイル

  • (割り当てるブラウザによって、またはMimetype属性を使用して指定するユーザーによって)MIMEタイプが指定されている場合、このMIMEタイプは、AUTO_FILTER_FORMATへのマッピングに使用されます(wwdav$mime表を使用)。

  • MIMEタイプが表に存在しない場合には、AUTO_FILTER_FORMATの検索にファイル拡張子が使用されます。

  • ファイル拡張子が、定義された拡張子のいずれとも一致しない場合には、ドキュメント索引用のデフォルトのAUTO_FILTER_FORMATが使用されます。

URL

  • ユーザーがMimetype属性を使用してMIMEタイプを指定した場合、このMIMEタイプは、AUTO_FILTER_FORMATへのマッピングに使用されます(wwdav$mime表を使用)。

  • MIMEタイプが表に存在せず、URLにファイル拡張子がある場合、AUTO_FILTER_FORMATの検索にファイル拡張子が使用されます。たとえば、URLがPDFファイルを指している場合、AUTO_FILTER_FORMATはBINARYに設定されます。

  • 拡張子がいずれとも一致しない場合には、URL索引用のデフォルトのAUTO_FILTER_FORMATが使用されます。

Oracle Portalでは、すべてのポータル・コンテンツの分類と絞込みが正常に行われるように、ファイルベースとURLベースのアイテム・タイプにMIMEタイプおよび文字セットという、2つの特別な属性が用意されています。これらの属性が含まれるように組込みのベース・ファイルとベースURLアイテム・タイプを拡張することによって、ポータル・コンテンツのアップロード時に正しい情報を入力できます。


注意:

MIMEタイプや文字セット属性によって、正しいMIMEタイプおよび文字セットをファイルベースとURLベースのアイテムに指定することは可能ですが、これらをファイルとURLの属性に指定することはできません。

  • ファイル属性 - ブラウザが常にMIMEタイプを判別します。

  • URL属性 - MIMEタイプはtext/htmlであるため、AUTO_FILTERは常にURL属性をプレーン・テキストとして処理します。


使用しているポータルでポータル検索の速度や効率性が重視されている場合や、データベースにない文字セットを使用するドキュメントをポータルで保存または参照する場合は、使用するファイルベースおよびURLベースのアイテム・タイプすべてにMIMEタイプおよび文字セットの属性を追加することを、そのページ・グループの管理者に依頼してください。『Oracle Fusion Middleware Oracle Portalユーザーズ・ガイド』アイテム・タイプへの属性の追加に関する項も参照してください。


注意:

MIMEタイプや文字セットでポータル・コンテンツを検索する場合、対応する属性(MIMEタイプまたは文字セット)を含むアイテム・タイプに基づくコンテンツのみが見つかります。


OTNを参照

詳細は、OTN(http://www.oracle.com/technology/)にあるOracle Textのドキュメントを参照してください。

10.3.4 Oracle Text索引の作成および削除

必要なすべてのOracle Text索引は、Oracle Portalリポジトリのインストール時に自動的に作成されます。ただし、後で索引を削除すると、再作成する必要がある場合があります。

索引の作成および削除は大量の時間とリソースを消費する操作であるため、業務時間中を避けてこの作業を計画するようにしてください。また、Oracle Text索引を削除して再作成すると、ポータルの検索機能が低下する場合があります。これは、検索機能が正常に機能するにはすべての索引が存在し、有効である必要があるためです。索引を削除すると、検索を有効にしていても、オプションの検索演算子や特別な検索結果属性などのOracle Text機能が一時的に利用できなくなります。これは、この作業を業務時間中を避けて計画することを推奨する別の理由です。


注意:

Oracle Text索引を削除または作成してもOracle Web Cacheは無効になりません。そのため、自動的に公開された検索結果や既存の検索フォームは、キャッシュで期限切れになるか、他のユーザーが「デフォルトの編集」ページを使用して検索ポートレットを編集するまで表示されます。


次の各項で、Oracle Text索引を作成および削除する方法について説明します。

10.3.4.1 ctxcrind.sqlを使用したすべてのOracle Text索引の作成

Oracle Portalに付属するスクリプトおよびパッケージを使用してすべてのOracle Text索引を再作成できます。Oracle Text索引を作成するための主なスクリプトはctxcrind.sqlで、これはディレクトリORACLE_HOME/portal/admin/plsql/wwsにあります。

Oracle Portalリポジトリのスキーマの所有者として、スクリプトctxcrind.sqlを実行すると、次のようになります。

  • 必要なすべてのOracle Text索引および設定が作成されます。第10.3.3項「Oracle Text索引」も参照してください。

  • 既存のOracle Text索引がある場合は、すべての既存の設定および有効な索引が削除され、再作成されます。索引は、次の場合に有効であるとみなされます。

    • 関連する索引のビューuser_indexes内の行のindex_status、domidx_statusおよびdomidx_opstatusがすべて'VALID'に設定されています。

    • 索引には、ctx_user_indexesに、idx_statusが'INDEXED'に設定されたエントリがあります。

  • 存在しない索引も作成されます。

この処理は、数時間を要することがあります。

スクリプトctxcrind.sqlを使用してOracle Text索引を作成するには:

  1. ORACLE_HOME/portal/admin/plsql/wwsディレクトリに移動します。

  2. SQL*Plusで、PORTALスキーマのユーザー名とパスワードを使用してログインします。

  3. SQL*Plusで、次のコマンドを入力します。

    ctxcrind.sql
    

処理が正常に終了すると、すべてのOracle Text索引および設定がOracle Portalリポジトリのスキーマに作成されます。処理に失敗する場合は、システムがすべての要件を満たしているかどうかを確認します。第10.3.2項「Oracle Textの前提条件」を参照してください。


注意:

Oracle Text索引の作成に要する時間は、ポータルに存在するアイテムおよびページ・グループの数によって変わります。


スクリプトctxcrind.sqlは、次のプロシージャをコールします。

wwv_context.createindex( p_message => l_message );

p_messageは、完了メッセージを渡すoutパラメータです。コールwwv_context.createindex()は、次のようになります。

wwv_context.drop_prefs;  /* Drop all Oracle Text preferences for the indexes, except Lexer preferences */
wwv_context.drop_invalid_indexes; /* Drop all invalid indexes */
wwv_context.create_prefs; /* Create all Oracle Text preferences,except Lexer preferences */
wwv_context.create_missing_indexes(l_indexes);  /* Create missing indexes and record them in l_indexes */
wwv_context.touch_index(l_indexes); /* Mark all rows for created indexes as requiring synchronization */
wwv_context.sync;     /* Synchronize indexes */
wwv_context.optimize; /* Optimize indexes */

10.3.4.2 1つのOracle Text索引の作成

特定の索引を作成する場合は、プロシージャwwv_context.create_index(p_index)を使用します。付録D「create_index」も参照してください。

p_indexを使用して、作成する索引を指定します。次のいずれかを選択できます。

wwv_context.PAGE_TEXT_INDEX
wwv_context.DOC_TEXT_INDEX
wwv_context.PERSPECTIVE_TEXT_INDEX
wwv_context.ITEM_TEXT_INDEX
wwv_context.CATEGORY_TEXT_INDEX
wwv_context.URL_TEXT_INDEX

このプロシージャは、空の索引を作成します。空の索引からは検索結果を返すことができないため、索引にデータを移入する必要もあります。更新のために索引をマークする方法および索引を同期化する方法の詳細は、第10.3.5.6項「すべての索引のコンテンツの同期化」を参照してください。

10.3.4.3 ctxdrind.sqlを使用したすべてのOracle Text索引の削除

スクリプトctxdrind.sqlを使用して、すべてのOracle Text索引および設定(レクサー・プリファレンスを除く)を削除できます。このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。

スクリプトctxdrind.sqlを使用してすべてのOracle Text索引を削除するには:

  1. ORACLE_HOME/portal/admin/plsql/wwsディレクトリに移動します。

  2. SQL*Plusで、PORTALスキーマのユーザー名とパスワードを使用してログインします。

  3. SQL*Plusで、次のコマンドを入力します。

    ctxdrind.sql
    

    このスクリプトは、次のプロシージャをコールします。

    wwv_context.dropindex(p_message  =>l_message);
    

    p_messageは、完了メッセージを渡すoutパラメータです。


    注意:

    Oracle Text索引を削除すると、索引が作成されていた表を参照するビューとパッケージは無効になります。

    これらのビューとパッケージは、次にアクセスされたときに自動的に有効になります。ビューとパッケージは、手動で有効にすることもできます。


10.3.4.4 1つのOracle Text索引の削除

特定のOracle Text索引を削除するとします。たとえば、別のプロキシ設定で再作成できるようにするためにURL索引を削除し、その他のすべての索引は削除も再作成もしない場合などです。

これを行うには、次のコマンドを使用して索引を直接削除します。

SQL> drop index <index_name> force;

たとえば、URL索引を削除するには、次のように入力します。

SQL> drop index WWSBR_URL_CTX_INDX force;

また、wwv_context.drop_indexを使用して索引を削除することもできます。

SQL>exec wwv_context.drop_index('<index_name>');

付録D「drop_index」も参照してください。

10.3.5 Oracle Text索引の管理

正確な検索結果をポータルから効率的に得るには、Oracle Text索引を適切に管理することが重要です。Oracle Text索引を管理している場合は、索引の同期化と最適化を検討する必要があります。

  • 同期化: キューに基づいてOracle Text索引を更新します。

  • 最適化: 断片化された行を圧縮し、Oracle Text索引に含まれる古いデータを削除します。索引を同期化すると、必要以上に多くのディスク容量を消費するようになり、問合せの効率が低下します。

Oracle Textを使用すると、各索引が同期化および最適化される頻度を完全に制御できます。同期化の詳細は、次を参照してください。

最適化の詳細は、次を参照してください。

10.3.5.1 Oracle Text索引の同期化

新しいコンテンツ(アイテム、ページ、カテゴリ、パースペクティブ)をポータルに追加した場合は、そのコンテンツに索引を作成しないと検索結果として得ることができません。また、表の中で索引を作成済の行の内容を変更すると、その行は同期化が必要であるとマークされます。このような行は、保留状態の行と呼ばれ、索引を同期化しないと検索結果として返されません。

ビューctx_user_pendingで、どの行が保留状態であるとマークされているかを確認できます。また、スクリプトtextstat.sqlを使用して、索引ごとに同期化する必要のある行数を確認できます。第10.3.8項「Oracle Text索引のステータスの表示」も参照してください。

インストール時にはOracle Textの索引が作成されて同期化されますが、すべての索引はデフォルトで、wwv_context.syncをコールするジョブによって1時間おきに同期化されるようにスケジュールされます。使用しているポータルで1時間おきの同期化が不適切な場合は、デフォルトの同期化スケジュールを変更することができます。たとえば、テキスト変更をすぐに索引に反映させる必要がある場合は、5秒ごとに同期化するように選択できます。または、コンピュータの処理資源をより効率的に利用しながら、最適な索引を目指す場合は、1日に一度だけ同期化するように選択できます。第10.3.5.4項「索引の同期化のスケジューリング」を参照してください。

ポータル・コンテンツを追加、更新または削除した後、Oracle Text索引がすぐに同期化されるように指定できます。また、この指定は索引ごとに構成できます。Oracle Database 10gより前のバージョンではsyncプロパティがサポートされていないため、この機能はこれらのバージョンのデータベースでは使用できません。ページ、アイテム、カテゴリおよびパースペクティブの索引は、コミット時に同期化されるように構成することをお薦めします。この構成が原因で検索パフォーマンスが低下することはありません。ドキュメントとURLの索引もコミット時に同期化されるように構成できますが、その場合はポータル検索の速度と効率が低下する可能性があるので、その使用はポータルごとに評価する必要があります。表10-4に、Oracle Database 11gのOracle Text索引の推奨される同期化スケジュールを示します。

表10-4 Oracle Database 11gのOracle Text索引の推奨される同期化スケジュール

Oracle Text索引 Oracle Database 11gでの索引の同期化

ページ、アイテム、カテゴリ、パースペクティブ

コミットの直後、つまり、関連するポータル・オブジェクトが追加、変更または削除された後に同期化します。第10.3.5.2項「Oracle Text索引のコミット時の同期化」を参照してください。

ドキュメント、URL

wwv_context.syncをコールするジョブによって1時間おきに(または他の定期的な間隔で)同期化をスケジュールします。第10.3.5.4項「索引の同期化のスケジューリング」を参照してください。


次の項では、同期化オプションについて説明します。

10.3.5.2 Oracle Text索引のコミット時の同期化

wwv_context.commit_sync()プロシージャを使用して、ポータルにデータがコミットされた直後にOracle Text索引を同期化するかどうかを指定できます。詳細は、付録D「commit_sync」も参照してください。

コミットしても、同期化が完了するまで何も返されません。同期化は別のトランザクションとして実行されるため、データがコミットされても、ある一定の期間(通常は、短時間)は索引の変更がコミットされない場合があります。この操作には、メモリー・パラメータで指定されたメモリーが使用されます。付録D「set_sync_memory」も参照してください。


注意:

この設定の現在のステータスを調べるには、textstat.sqlを使用します。詳細は、第10.3.8項「Oracle Text索引のステータスの表示」を参照してください。


コミット時におけるOracle Text索引の同期化の指定

wwv_context.commit_syncをOracle Portalスキーマの所有者としてSQL*Plusから、次のコマンドを使用して実行します。

exec wwv_context.commit_sync('<Index_name>', true);

手動によるOracle Text索引の同期化の指定

wwv_context.commit_syncをOracle Portalスキーマの所有者としてSQL*Plusから、次のコマンドを使用して実行します。

exec wwv_context.commit_sync('<Index_name>', false);

コミット時におけるOracle Text索引の同期化のステータス確認

wwv_context.get_commit_syncをOracle Portalスキーマの所有者としてSQL*Plusから、次のコマンドを使用して実行します。

set serveroutput on
begin
        dbms_output.put_line(
           case wwv_context.get_commit_sync('<index_name>')
               when true then
                 'Index synchronizes automatically when data commits'
               when false then
                  'Index needs to be synchronized manually'
            end
       );
end;

10.3.5.3 すべてのOracle Text索引の手動による同期化

wwv_context.sync()プロシージャを使用して、Oracle Text索引を手動で同期化します。このプロシージャは、すべての保留状態の行に索引を作成します。付録D「sync」も参照してください。

手動の同期化では、メモリー・サイズとパラレル同期も指定できます。付録D「set_parallel_degree」および付録D「set_sync_memory」も参照してください。


注意:

wwv_context.syncでは、データがコミットされた直後に同期化される索引(wwv_context.commit_syncがtrueに設定されている)は無視されます。


Oracle Text索引の手動による同期化

このプロシージャをOracle Portalスキーマの所有者としてSQL*Plusから、次のコマンドを使用して実行します。

exec wwv_context.sync();

次の構文を使用して、同期化の並列度を指定します。

exec wwv_context.set_parallel_degree('<index_name>', <parallel_degree>);

例:

exec wwv_context.set_parallel_degree('WWSBR_CORNER_CTX_INDX', 2);

次の構文を使用して、同期化のメモリー使用量を指定します。

exec wwv_context.set_sync_memory('<index_name>', <sync_memory);

例:

exec wwv_context.set_sync_memory('WWSBR_CORNER_CTX_INDX', 12582912);

このプロシージャは、すべての仮想プライベート・ポータルのサブスクライバ間で動作します。

10.3.5.4 索引の同期化のスケジューリング

ほとんどのインストールでは、新しく追加または更新したコンテンツに定期的に索引が作成されるように、索引の同期化を一定の間隔で自動的に実行するようにスケジュールする必要があります。textjsub.sqlスクリプトを使用して、ジョブをスケジュールできます。これには、dbms_jobを使用して、一定の間隔でwwv_context.syncをコールします。

このスクリプトは、次のように3つのパラメータをとり、同期化ジョブの変更または削除にも使用されます。

start_time        - a valid date or 'START' or 'STOP'
start_time_fmt    - start time format mask.
                    Ignored if start_time is 'START' or 'STOP'
interval_minutes  - minutes between each run. Ignored if 'STOP' 

start_timeにSTARTを設定した場合、2番目の引数が無視され、次のジョブがただちに実行されるようにスケジュールされます。それ以降のジョブは、指定した間隔で実行されます。

start_timeにSTOPを設定する場合は、ジョブは削除され、その他の引数は無視されます。

Oracle Text索引の同期化のスケジュール

textjsub.sqlスクリプトを実行します。たとえば、索引の同期化を60分ごとにスケジュールするには、次のように入力します。

SQL> @textjsub.sql START NOW 60

10.3.5.5 Oracle Text索引の同期化の頻度の決定

索引の同期化ジョブの適切な間隔は、次の条件によって決まります。

  • 新しいコンテンツがポータル・サイトに追加される頻度。

  • 新しく追加または変更されたコンテンツがただちに検索可能にならないと問題になるかどうか。

  • 追加または変更されたコンテンツが検索可能になるまでの期間はどの程度が妥当か。

要件によって、同期化の間隔は数分から数日になります。

少数の行の同期化を繰り返すよりも、多数の行の同期化を一度に行う方が、断片化された索引が少なくなるので効率的です。断片化された索引が少ない場合は、必要な最適化の頻度も少なくなります。詳細は、第10.3.5.7項「Oracle Text索引の最適化」を参照してください。

ただし、多数の行の索引を一度に同期化すると、サーバーに大きな負荷がかかります。同期化を頻繁に行うと、実行される作業量は増加しますが、サーバー上の負荷は分散されます。ジョブは、保留状態の行の同期化のみを行いますが、同期化ジョブを起動する際には、わずかでも常にオーバーヘッドがある程度発生します。

10.3.5.6 すべての索引のコンテンツの同期化

特定のOracle Text索引のすべての行を同期化が必要とマークして、その索引のすべてのコンテンツを同期化できます。

たとえば、索引は最初に作成された時点では空なので、索引のコンテンツ全体を更新する必要があります。このためには、索引を作成済の列について更新を実行する必要があります。表の中で索引を作成済のすべての行に対し、プロシージャwvv_context.touch_index(p_index)を使用して列を更新します。

このプロシージャの実行後、表ctx_user_index_pendingには、索引が作成された表の行ごとにエントリが作成されています。

このプロシージャは、すべての仮想プライベート・ポータルのサブスクライバ間で動作します。

索引のすべてのコンテンツの同期化

プロシージャwvv_context.touch_index(p_index)を使用します。p_indexを使用して、次の索引名のいずれか1つを指定できます。

wwv_context.PAGE_TEXT_INDEX
wwv_context.DOC_TEXT_INDEX
wwv_context.PERSPECTIVE_TEXT_INDEX
wwv_context.ITEM_TEXT_INDEX
wwv_context.CATEGPRY_TEXT_INDEX
wwv_context.URL_TEXT_INDEX

複数の索引のすべてのコンテンツの同期化

プロシージャwvv_context.touch_index(p_indexes)を使用します。p_indexesを使用して、同期化する索引名の可変配列(wwsbr_array)を指定できます。

10.3.5.7 Oracle Text索引の最適化

Oracle Text索引を同期化すると、それらが断片化されます。各Oracle Text索引は逆索引であり、逆索引では検索文字列は検索が効率的に行えるような形式になっています。各検索文字列は、文字列の場所を参照します。

同期化時に新しい検索文字列が追加される場合、重複する文字列は削除されないため、索引に同じ文字列が複数個含まれる場合があります。これにより索引のサイズが大きくなり、検索問合せのパフォーマンスが低下します。

これを解決するには、Oracle Text索引を最適化します。この処理は、索引を圧縮し、必要に応じて古いデータを削除します。

すべてのOracle Text索引の最適化

すべてのOracle Text索引を最適化するには、プロシージャwwv_context.optimize()を使用します。付録D「optimize」も参照してください。

このプロシージャは、次のパラメータをとります。

wwv_context.optimize
(
  p_optlevel in varchar2 default CTX_DDL.OPTLEVEL_FULL, -- FULL, FAST, TOKEN
  p_maxtime in number default null,  -- Maximum time for full optimization, in minutes
  p_token in varchar2 default null -- Token to optimize (when TOKEN)
);

内部的に、このプロシージャはOracle Text索引ごとにOracle Textプロシージャのctx_ddl.optimize_indexをコールし、これらのパラメータを渡します。高速最適化やトークンの最適化とは異なり、すべての索引が最適化されます。

OTNを参照

詳細は、OTN(http://www.oracle.com/technology/)にあるOracle Textのドキュメントを参照してください。


注意:

Oracle Text索引が存在しない場合は、プロシージャwwv_context.optimizeは無効です。


wwv_context.optimizeは、Oracle Text索引がかなり断片化されて最適化が必要な場合にのみ、Oracle Text索引を最適化します。使用される断片化の評価基準は、1つのトークンが索引に複数回現れる平均回数です。この平均が11以上の場合は、索引の最適化が必要とみなされます。次の断片化の問合せを使用します。

SELECT AVG(COUNT(*)) FROM DR$<index_name>$I
GROUP BY TOKEN_TEXT HAVING COUNT(*) > 1

<index_name>は、評価される索引の名前です。

10.3.5.8 索引の最適化のスケジューリング

ほとんどのインストールでは、索引の最適化プロセスを一定の間隔で自動的に実行するようにスケジュールする必要があります。スクリプトoptjsub.sqlを使用して、ジョブをスケジュールできます。これには、dbms_jobを使用して、一定の間隔でwwv_context.optimizeをコールします。

このスクリプトoptjsub.sqlは、次のように3つのパラメータをとり、最適化ジョブの変更または削除にも使用されます。

start_time       - A valid date or 'START' or 'STOP'
start_time_fmt   - Start time format mask.
                   Ignored if start_time is 'START' or 'STOP'
interval_minutes - Minutes between each run. Ignored if 'STOP'

start_timeに'START'を設定した場合、2番目の引数が無視され、次のジョブがただちに実行されるようにスケジュールされます。それ以降のジョブは、指定した間隔で実行されます。

start_timeに'STOP'を設定する場合は、ジョブは削除され、その他の引数は無視されます。

Oracle Portalのインストール時に、24時間ごとにすべてのOracle Text索引を最適化するためのジョブが設定されます。

Oracle Text索引の最適化のスケジュール

スクリプトoptjsub.sqlを実行します。たとえば、索引の最適化を60分ごとにスケジュールするには、次のように入力します。

SQL> @optjsub.sql START NOW 60

このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。この最適化ジョブの実行時にOracle Text索引がない場合は、このプロシージャは無効です。

10.3.5.9 最適化の間隔の選択

Oracle Text索引に必要な最適化の頻度は、ロードするコンテンツの量や種類、同期化のスケジュールなどの多くの要因に依存するので予測は困難です。

ただし、一定の間隔で索引の断片化を評価する場合は、索引の断片化の速度を確認できます。この情報を使用して、適切な最適化の間隔を設定できます。

プロシージャwwv_context.optimizeでは、索引が断片化されているとみなされた場合にのみ、索引を最適化します。したがって、このジョブをコールする際の最小のオーバーヘッド以外は、必要以上にこのジョブを実行しても問題はありません。

Oracle Portalのインストール時に、24時間ごとにすべてのOracle Text索引を最適化するためのジョブが設定されます。

10.3.6 URLコンテンツの索引作成と検索

Oracle PortalでOracle Textが有効な場合、アイテムまたはページにアタッチされたURL属性のコンテンツにデフォルトで索引が作成されます。索引作成には、ページ上のポートレット・コンテンツが含まれないことに注意してください。URLコンテンツに索引が作成されると、検索可能になります。URL属性の検索条件を入力すると、そのURLコンテンツが検索されます。


注意:

ポータル・ユーザーにURLコンテンツの検索を許可しない場合は、URL索引を無効にできます。詳細は、第10.3.7項「ドキュメント索引およびURL索引の作成の無効化」を参照してください。


10.3.6.1 相対URL

Oracle Portalでは、URL属性の相対URLを入力できます。相対URLがポータル・ページでリンクとして表示されるときには、URLはポータル・ページのHTMLの<head>セクションに設定されたベースHREFに対して相対的です。ベースHREFの書式は次のとおりです。

<protocol>://<server>:<port>/portal/pls/<dad>/

たとえば、HTMLの<head>セクションに、次のようなURLが指定されたとします。

<base href="http://myserver.abc.com/portal/pls/portal/">

この例では、次のようになります。

  • 相対URLの/help/index.htmlは、ブラウザにより次のように解決されます。

    http://myserver.abc.com/help/index.html

  • 相対URLの!PORTAL.mypackage.proc(先行の/なし)は、ブラウザにより次のように解決されます。

    http://myserver.abc.com/portal/pls/portal/!PORTAL.mypackage.proc

ページ上のベースHREFは、ページをリクエストするのに使用されるURLによって変わります。ページにアクセスするために複数のURLを使用することが可能なので、ベースHREFはページにアクセスするために使用されたURLを反映します。

Oracle TextのベースURLの設定

URLコンテンツに索引を作成する場合、Oracle Textでは相対URLを完全修飾された絶対URLに解決する方法を知る必要があります。Oracle Textには、正しいベースHREFを判断するための最初のリクエストのコンテキストがわからないため、使用するベースHREFを指定する必要があります。「グローバル設定: 検索」ページで「Oracle TextのベースURL」プロパティを指定して、このオプションを設定します。詳細は、第10.2.2.3項「Oracle TextのベースURLの設定」を参照してください。

Oracle Portalのインストール時に、このオプションは自動的に設定されます。

Oracle TextのベースURLの書式は次のとおりです。

<protocol>://<server>:<port>/portal/pls/<dad>/

たとえば、http://myserver.abc.com/portal/pls/portal/のようになります。


注意:

HTTPS URLには、Oracle Textで索引が作成されないので、httpsで始まるOracle TextベースURLを指定しないでください。入力すると、どの相対URLにも索引は作成されません。


Oracle TextベースURLを変更しても、その場では有効になりません。編集したURLは同期化が必要とマークされ、索引を次回同期化したときにOracle Textで新しい設定が使用されます。すべてのURLで新しいOracle TextベースURL値をすぐに使用する場合は、次のプロシージャを使用して、URL索引のコンテンツ全体に同期化が必要とマークします。

SQL> wwv_context.touch_index(wwv_context.URL_TEXT_INDEX);

このプロシージャは、すべてのサブスクライバ間で有効です。1つの仮想プライベート・ポータル・サブスクライバでは、これは次のものに相当します。

SQL> update wwsbr_url$ set absolute_url = null;
...
SQL> commit;

10.3.6.2 サポートされていないURL

Oracle Text索引は、次のプロトコルを使用するURLには作成できません。

  • https

  • javascript

URLアイテムがこれらのプロトコルのいずれかを指定する場合は、それには索引は作成されません。対応するエラーは、Oracle Textのエラー・ログには記録されません。

10.3.6.3 サポートされているURL

Oracle Text索引は、次のプロトコルを使用するURLに作成できます。

  • http

  • file - ファイルURLは、データベース・サーバーからアクセス可能である必要があります。

  • ftp - FTP URLでは、匿名ユーザーでも、Oracle Textは認証を行えないので、認証を必要としない場所を指定する必要があります。

10.3.6.4 URLの索引のプロキシ設定

URLのコンテンツに索引を作成すると、Oracle Textではプロキシ・サーバーを使用してURLにアクセスできます。これは、Oracle Portalがファイアウォールの内側にあり、かつURLがこのファイアウォールの外側を指す場合に必要となります。索引の作成は、Oracle Portalリポジトリ・サーバーから行われるため、重要なのはこのコンピュータに必要なプロキシ設定です。

URL索引では、Oracle Portalにグローバルに使用されるものと同じプロキシ設定を使用します。これらは「プロキシ設定」ページで設定し、「サービス」ポートレットから使用できます。詳細は、第10.2.2.4項「Oracle Textのプロキシ設定の構成」を参照してください。

プロキシ設定は、Oracle Text索引が作成されるときに使用されます。したがって、プロキシ設定を変更する場合は、索引を再作成する必要があります。すべての索引を削除し、再作成する必要がある場合は、スクリプトのctxdrind.sql(索引の削除)およびctxcrind.sql(索引の作成)を使用します。詳細は、第10.3.4項「Oracle Text索引の作成および削除」を参照してください。

SQL> @ctxdrind.sql
...
SQL> @ctxcrind.sql
...

これらのスクリプトは、すべての索引をいったん削除してから再作成するので、大規模な索引では処理に時間がかかることがあります。代替策として、次のようにOracle Textの設定とURL索引のみを削除してから再作成することもできます。

begin
   -- Drop and re-create the Oracle Text preferences
   -- to pick up the new proxy settings.
   wwv_context.drop_prefs();
   wwv_context.create_prefs();
end;
/
-- Check that the proxy settings used by the index are correct
select prv_attribute attribute, prv_value value 
  from ctx_user_preference_values 
  where prv_attribute in ('TIMEOUT','HTTP_PROXY','NO_PROXY')
/

begin 
   -- Drop and re-create the URL index
   wwv_context.drop_index(wwv_context.URL_TEXT_INDEX);
   wwv_context.create_index(wwv_context.URL_TEXT_INDEX);

   -- Mark all of the rows for the index as pending
   wwv_context.touch_index(wwv_context.URL_TEXT_INDEX);

   -- Syncronize and optimize
   wwv_context.sync();
   wwv_context.optimize();
end;
/

10.3.7 ドキュメント索引およびURL索引の作成の無効化

デフォルトでは、Oracle Portalリポジトリにアップロードされたファイルのコンテンツと、URLアイテムまたはカスタムURL属性で参照されるコンテンツに索引が作成されます。これにより、ドキュメントとURLコンテンツで文字列を検索および検出できるため、通常はこの設定の方が適切です。

ポータル・ユーザーがファイルおよびURLコンテンツ内で検索を実行する必要がない場合は、これらのドキュメントおよびURLの索引を無効にできます。無効にすると、検索対象は、アイテム、ページ、カテゴリおよびパースペクティブのメタデータ(タイトル、作成者、キーワード、説明、更新日と、すべてのカスタム・テキスト、ブールおよび日付属性を含む)に限定されます。メタデータ限定の検索は、効率的であるため、ファイルとURLコンテンツを含む検索よりも高速です。


注意:

機能的なAUTO_FILTERが存在しないデータベースにOracle Portalリポジトリをインストールすると、ドキュメントおよびURLの検索は、AUTO_FILTERなしでは機能しないことから、自動的に無効になります。


次のプロシージャを使用して、ドキュメントおよびURLの索引が必要かどうかを指定します。

これらのプロシージャは両方とも、パッケージwwv_contextの中にあります。詳細は、付録D「wwv_context APIの使用」を参照してください。

ドキュメント索引とURL索引を無効にする場合、(通常は失われたOracle Text索引を作成する)ctxcrind.sqlスクリプトを使用して、必要ではなくなった既存のドキュメント索引とURL索引を削除します。ドキュメント索引とURL索引を削除しない場合でも、それらの索引は、同期化ジョブや最適化ジョブの実行時に更新されます。したがって、ctxcrind.sqlを実行して未使用の索引を削除するほうが効率的です。第10.3.4項「Oracle Text索引の作成および削除」を参照してください。

ドキュメントおよびURLの索引設定を変更すると、Oracle Portalの検索ポートレットの外観と動作が影響を受けます。ポートレットをキャッシュしている場合、この変更は即座に反映されない場合があります。そのため、索引になんらかの変更を加えた後は、ポータルのキャッシュを手動で消去する必要があります。第6.7.4.4項「特定ポータル・オブジェクトのキャッシュの消去」を参照してください。

たとえば、ドキュメント索引を無効にすると、検索ポートレットでは、使用できるファイルベース属性の検索演算子が少なくなります。つまり、「ファイル名の中のすべてに一致」「ファイル名の中のいずれかに一致」のみが表示されます。同様に、URL索引を無効にすると、URLベース属性に使用できる演算子は、「URLの中のすべてに一致」「URLの中のいずれかに一致」のみになります。これらの索引を無効にすると、ファイルおよびURLコンテンツは検索不可能になるため、他の検索演算子(「コンテンツにすべてが含まれる」など)は表示されなくなります。

ドキュメント索引を無効にすると、テーマ、要旨およびHTMLとして表示の各機能は使用できなくなるため、「グローバル設定: 検索」ページでテーマと要旨を無効にする必要があります。詳細は、第10.2.2.2項「Oracle Text検索結果オプションの設定」を参照してください。

ドキュメント索引とURL索引の有効と無効を切り替えるには:

次のプロシージャを使用します。

-- To enable the document index
execute wwv_context.set_use_doc_index(true);
-- To disable the document index execute wwv_context.set_use_doc_index(false);
-- To enable the URL index execute wwv_context.set_use_url_index(true);
-- To disable the URL index execute wwv_context.set_use_url_index(false);

10.3.8 Oracle Text索引のステータスの表示

ポータル・スキーマからアクセスできるいくつかの表およびビューで、Oracle Text索引のステータスを確認できます。

Oracle Text索引のステータス・レポートを表示するには、ポータル・スキーマの所有者としてtextstat.sqlスクリプトを実行します。

SQL> @textstat.sql

このスクリプトは、ORACLE_HOME/portal/admin/plsql/wwsディレクトリにあります。このスクリプトによって生成される情報の例を次に示します。

SQL> @textstat
Portal Text Indexes:

INDEX_NAME            STATUS   DOMIDX_STATUS DOMIDX_OPSTATUS IDX_STATUS
--------------------- -------- ------------- --------------- ------------
WWSBR_CORNER_CTX_INDX VALID    VALID         VALID           INDEXED
WWSBR_DOC_CTX_INDX    VALID    VALID         VALID           INDEXED
WWSBR_PERSP_CTX_INDX  VALID    VALID         VALID           INDEXED
WWSBR_THING_CTX_INDX  VALID    VALID         VALID           INDEXED
WWSBR_TOPIC_CTX_INDX  VALID    VALID         VALID           INDEXED
WWSBR_URL_CTX_INDX    VALID    VALID         VALID           INDEXED

Document and URL index preferences:
Document Index: true  - index will be used if valid
URL Index:      true  - index will be used if valid

Indexes with rows waiting to be indexed:

Index                     Rows to Index
-----------------------   -------------
WWSBR_CORNER_CTX_INDX        2677

PL/SQL procedure successfully completed.

Scheduled Text Jobs:

LAST_DATE LAST_SEC  NEXT_DATE NEXT_SEC  B  FAILURES INTERVAL            WHAT
--------- --------- --------- ---------- - ------ ------------------------- 
25-AUG-05 04:57:32  26-AUG-05 04:57:32  N   0     SYSDATE + 24/24 wwsbr_stats.gather_stale;
25-AUG-05 04:57:32  26-AUG-05 04:57:32  N   0     SYSDATE + 1440/(24*60) wwv_context.optimize(CTX_DDL.OPTLEVEL_FULL,1440,null);
25-AUG-05 06:59:30  25-AUG-05 07:59:30  N   0     SYSDATE + 60/(24*60)  wwv_context.sync;

Running Text Jobs:
no rows selected

Indexes sync on commit setting:
Item Index:        true    - Index will sync automatically when data commits
Page Index:        true    - Index will sync automatically when data commits
Document Index:    false   - Index needs to be syncronized manually
Category Index:    true    - Index will sync automatically when data commits
Perspective Index: true    - Index will sync automatically when data commits
URL Index:         false   - Index needs to be syncronized manually

SQL>

このスクリプトから、次の情報を表示できます。

  • Portalテキスト索引のステータス - すべてのOracle Text索引が存在するかどうか、およびそれらの現在のステータスが表示されます。この例で示したように、最初の3つのステータスの列では、機能する有効な索引に対してはすべてVALIDが表示され、最後の列にはINDEXEDが表示されています。第10.3.3.1項「Oracle Text索引の概要」も参照してください。

  • ドキュメントおよびURL索引のステータス - ドキュメント索引とURL索引が有効(true)であるか無効(false)であるかが表示されます。第10.3.7項「ドキュメント索引およびURL索引の作成の無効化」も参照してください。

  • 索引ごとの保留中の行数 - 索引作成を待機中の索引が表示されます。索引作成を待機中、または保留中の行がある索引ごとにエントリが表示されます。保留状態の行の数も表示されます。第10.3.5.1項「Oracle Text索引の同期化」も参照してください。

  • スケジュールされたOracle Textのジョブの詳細 - 索引の管理のためにスケジュールされているジョブが表示されます。このレポートには、ジョブが最後に実行された日時とジョブが次回実行される予定の日が表示されます。Bの列は、ジョブが壊れたかどうかを示します。壊れた場合はYとマークされ、実行されません。Interval列は、次回ジョブが実行される時刻を示し、最後にWhat列は各ジョブに対して実行されるプロシージャを示します。第10.3.5.4項「索引の同期化のスケジューリング」も参照してください。

  • アクティブなOracle Textジョブの詳細 - textstat.sqlレポートが実行されたときに、実行されていたジョブの詳細が表示されます。

  • コミット時の索引の同期化の設定 - このセクションには、ポータルでデータがコミットされた直後に同期化を実行するように構成されている索引、およびwwv_context.syncを使用して手動で(またはジョブを使用して)同期化する必要がある索引が表示されます。第10.3.5.2項「Oracle Text索引のコミット時の同期化」も参照してください。

    以前のバージョンのデータベースでは、次の情報が表示されます。

    Indexes sync on commit setting:
    ...Not available for this database version, available from 10g onwards.
    

10.3.9 Oracle Textの索引作成処理の監視

Oracle Textは、索引が作成され値が入力されると、ファイルにログ情報を記録します。これにより、索引作成処理の進捗状況を監視し、索引を追跡し、発生する可能性のある問題のトラブルシューティングを行うことができるようになります。

10.3.9.1 start_logを使用した索引処理の監視

ctx_output.start_log (filename)コマンドを使用して、索引作成プロセスからの出力をログに記録できます。次の例では、ログ・ファイルの名前はtextindex.logとなっています。

ctx_output.start_log('textindex.log');
ctx_output.add_event(ctx_output.event_index_print_rowid);
...
-- Create or syncronize the indexes
...
ctx_output.end_log;

ログ・ファイルの場所は、ctx_adm.set_parameterLOG_DIRECTORYパラメータを使用して指定できます。この例では、/tmpを指定します。いったんディレクトリを設定すると、それ以降のすべてのOracle Textのログはこのディレクトリに出力されます。

ctxsys.ctx_adm.set_parameter('LOG_DIRECTORY', '/tmp');

10.3.9.2 logcrind.sqlを使用した索引作成の監視

スクリプトlogcrind.sql (ctxcrind.sqlのかわり)を使用すると、ログを有効にしてOracle Text索引を作成できます。このスクリプトは、ログ・ファイルの名前であるパラメータを1つとります。例:

SQL> @logcrind.sql textindex.log

このスクリプトは、LOG_DIRECTORYを、user_dump_dest初期化パラメータで指定された、データベースudumpディレクトリと同じになるように設定します。

add_eventコール(前述の例で使用されている)は、スクリプトlogcrind.sqlでも使用され、これは索引が作成されたすべての行の行IDをログに出力します。このログは、索引作成処理の追跡を可能にし、各行の索引作成が正常に行われたかどうかも示します。

次にのOracle Text索引作成ログの例を示します。

13:53:27 05/06/03 begin logging
13:53:27 05/06/03 event
13:53:42 05/06/03 log
13:53:42 05/06/03 event
13:53:48 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_CORNER_CTX_INDX$X"
13:53:48 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_CORNER_CTX_INDX$X" created
13:53:49 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_DOC_CTX_INDX$X"
13:53:49 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_DOC_CTX_INDX$X" created
13:53:49 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_PERSP_CTX_INDX$X"
13:53:49 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_PERSP_CTX_INDX$X" created
13:53:50 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_THING_CTX_INDX$X"
13:53:50 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_THING_CTX_INDX$X" created
13:53:51 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_TOPIC_CTX_INDX$X"
13:53:51 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_TOPIC_CTX_INDX$X" created
13:53:51 05/06/03 Creating Oracle index "MYPORTAL"."DR$WWSBR_URL_CTX_INDX$X"
13:53:51 05/06/03 Oracle index "MYPORTAL"."DR$WWSBR_URL_CTX_INDX$X" created
13:54:16 05/06/03 sync index: MYPORTAL.WWSBR_CORNER_CTX_INDX
13:54:17 05/06/03 Begin document indexing
13:54:17 05/06/03 INDEXING ROWID AAAUUcAAJAAAlhMAAA
13:54:17 05/06/03 INDEXING ROWID AAAUUcAAJAAAlhMAAI
..
13:54:18 05/06/03 INDEXING ROWID AAAUUcAAJAAAlhQAAk
13:54:18 05/06/03 Errors reading documents: 0
13:54:18 05/06/03 Index data for 159 documents to be written to database
13:54:18 05/06/03    memory use: 225971
13:54:18 05/06/03 Begin sorting the inverted list.
13:54:18 05/06/03 End sorting the inverted list.
13:54:18 05/06/03 Writing index data to database.
13:54:18 05/06/03    index data written to database.
13:54:18 05/06/03 End of document indexing. 159 documents indexed.

10.3.10 索引作成エラーの表示

索引の作成時または同期化時に発生したエラーは、ビューCTX_USER_INDEX_ERRORSに記録されます。次のコマンドを使用して、それらのエラーの詳細を表示できます。

SQL> desc ctx_user_index_errors;
 Name                   Null?    Type
 ---------------------- -------- ---------------
 ERR_INDEX_NAME         NOT NULL VARCHAR2(30)
 ERR_TIMESTAMP                   DATE
 ERR_TEXTKEY                     VARCHAR2(18)
 ERR_TEXT                        VARCHAR2(4000)

SQL>

このビューには、索引名、索引が作成された表内の行に対応する行ID (ERR_TEXTKEY列)、および失敗の原因を示すエラー・メッセージが表示されます。また、エラー・ログ・ファイルには、索引が作成された表内の行の行IDと成功または失敗メッセージが表示されます。

通常、アイテム(WWSBR_THING_CTX_INDX)、ページ(WWSBR_CORNER_CTX_INDX)、カテゴリ(WWSBR_TOPIC_CTX_INDX)またはパースペクティブ(WWSBR_PERSP_CTX_INDX)の索引のエラーは表示されません。これは、Oracle Portalとこれらのコンテンツが生成する索引のコンテンツに対する索引の作成が容易なためです。ドキュメントやURLコンテンツの索引を作成するときのほうがエラーが頻繁に発生します。

ドキュメント索引の場合、コンテンツの絞込みを行いバイナリの文書をプレーン・テキストに変換して、索引を作成することが必要な場合があります。これが失敗する理由がいくつかあります。たとえば、ドキュメントの書式がOracle TextのフィルタであるAUTO_FILTERでサポートされていない場合などです。第10.3.3.7項「AUTO_FILTERパフォーマンスの最大化」も参照してください。

URL索引の場合、URLコンテンツを取り出す必要があり、これがいくつかの理由で失敗することがあります。たとえば、Oracle Portalサーバーがファイアウォールの内側にあるためにアクセスできない場所がURLで指定され、かつプロキシ設定が正しく設定されていない場合などです。または、URLが誤っているか、アクセス対象のサイトが停止している場合などです。

また、URLのコンテンツが絞り込まれるときにエラーが発生する場合があります。たとえば、すべてのURL属性はプレーン・テキストであると想定されるため、プレーン・テキストでないURL属性が存在する場合はエラーが発生します。

10.3.11 索引作成エラーのOracle Portal内のオブジェクトへの変換

ビューCTX_USER_INDEX_ERRORSまたはOracle Text索引作成ログに表示される索引作成のエラーは、エラーが発生したときに索引が作成されていた表内の行IDを示します。この情報を使用して索引作成の問題が発生している行を特定し、またこの行に対応するポータル・アイテムまたはページも特定できます。

次の項では、索引作成の問題の原因を特定する必要がある場合に役立つ問合せについて説明します。

10.3.11.1 アイテムの索引作成エラー

行IDは、問題が発生したアイテム表内の行を示します。直接の問合せを実行して、その行についてさらに情報を得ることができます。例:

select i.name, i.title,          -- item title
       p.name page_name,         -- page name
       p.title page_title,       -- page display name
       pg.name page_group,       -- page group name
       sl.title page_group_title -- page group display name (default language)
  from wwv_things i,
       wwpob_page$ p,
       wwpob_item$ pi,
       wwsbr_sites$ pg,
       wwsbr_site_languages$ sl
 where i.masterthingid = pi.master_thing_id
   and i.siteid = pi.site_id
   and pi.page_id = p.id
   and sl.siteid = pg.id
   and sl.language = pg.defaultlanguage
   and pi.page_site_id = p.siteid
   and pg.id = i.siteid
   and i.rowid = 'AAAOwMAAJAAAWISAAF

10.3.11.2 ページの索引作成エラー

行IDは、ページ表内の行を示します。直接の問合せを実行して、索引が作成されていたページについてさらに情報を得ることができます。例:

select p.name page_name,
       p.title page_title,
       pg.name page_group,
       sl.title page_group_title
  from wwpob_page$ p,
       wwsbr_sites$ pg,
       wwsbr_site_languages$ sl
 where sl.siteid = pg.id
   and sl.language = pg.defaultlanguage
   and pg.id = p.siteid
   and p.rowid = 'AAAOv/AAJAAAaSSAAB'

10.3.11.3 カテゴリ索引エラー

カテゴリ表に対して直接の問合せを実行して、問題のカテゴリを特定できます。結合を使用して、ページ・グループを表示することもできます。この問合せは、カテゴリ名と表示名、そしてページ・グループ名と表示名を表示します。

select c.title, c.name, pg.name, sl.title
  from wwv_topics c,
       wwsbr_sites$ pg,
       wwsbr_site_languages$ sl
 where sl.siteid = pg.id
   and sl.language = pg.defaultlanguage
   and pg.id = c.siteid
   and rowid='AAAOv/AAJAAAaSSAAB'

10.3.11.4 パースペクティブの索引作成エラー

カテゴリの場合と同様です。パースペクティブ表に対して直接の問合せを実行すると、問題のパースぺクティブがわかります。結合を使用して、ページ・グループを表示することもできます。

select p.title, p.name, pg.name, sl.title
  from wwv_perspectives p,
       wwsbr_sites$ pg,
       wwsbr_site_languages$ sl
 where sl.siteid = pg.id
   and sl.language = pg.defaultlanguage
   and pg.id = p.siteid
   and p.rowid = 'AAAOv/AAJAAAaSSAAB'

10.3.11.5 ドキュメント索引エラー

ドキュメント索引でエラーが頻繁に発生することがあります。この場合、索引はドキュメントが実際に格納された表にあります。したがって、アイテム表に結合しなおして、関連するアイテムを特定する必要があります。

次の問合せは、ドキュメントの問合せに関連するドキュメントのファイル名、アイテムの名前および表示名を返します。

select d.filename, i.name, i.title  from wwv_things i,
       wwdoc_document$ d,
       wwv_docinfo di
 where
    d.name = di.name(+)
    and di.thingid = i.id(+)
    and di.masterthingid = i.masterthingid(+)
    and di.siteid = i.siteid(+)
    and d.rowid = 'AAAOYyAAJAAAWAaAAF'

すべてのドキュメントがアイテムと関連付けられるとはかぎらないので、この場合同様の方法でページ表に結合するように問合せを変更する必要があります。

10.3.11.6 URL索引エラー

ドキュメント索引同様、関連するアイテムを特定するためにアイテム表に結合しなおす必要があります。

次の問合せは、URL、およびアイテム名と表示名を表示します。

select u.url, u.absolute_url, i.name, i.title
  from wwv_things i,
       wwsbr_url$ u
 where u.object_id = i.id
   and u.object_siteid = i.siteid
   and u.object_type = 'ITEM'
   and u.rowid = 'AAAOYyAAKAAAWAaAAB' 

URLはアイテムに関連付けられているとはかぎらず、ページに関連付けられていることもあり、その場合同様にページ表に結合するように問合せを変更する必要があります。

10.3.12 一般的な索引作成エラー

次の項では、一般的な索引作成エラーについて説明します。

10.3.12.1 一般的なドキュメント索引作成エラー

通常、ドキュメント索引作成エラーは次の書式になります。

DRG-11207: user filter command exited with status n

問題の原因は実際の終了ステータスで示されます。一般的な終了ステータスの値とその意味の説明は、Oracle Metalink (http://metalink.oracle.com)にログオンし、記事「Troubleshooting DRG-11207 errors」を参照してください。この記事のIDはDocId 210319.1です。

10.3.12.2 一般的なURL索引作成エラー

ここでは、いくつかの一般的なURL索引作成エラーを示します。このリストには、すべてのエラーが含まれているわけではなく、よく発生する一般的なエラーの一部に焦点を当てています。

DRG-11604 URL store: access to %(1)s is denied

索引作成ユーザー・エージェントがドキュメントへのアクセスを拒否されました。クローラは、サイトから返されたCookieの認証や管理を行うことができません。そのURLにアクセスできるかどうかを確認します。それが保護されている場合は、そのコンテンツに索引作成できない可能性があります。

DRG-11609 URL store: unable to open local file specified by %(1)s
DRG-11610 URL store: unable to read local file specified by %(1)s

これらは、ファイル:// URLのファイルを開いたり読み取ったりすることができない場合に発生します。Oracle Portalリポジトリ・データベースが稼働しているコンピュータからファイルにアクセスできる必要があります。ファイルが存在し、データベース・ユーザーとしてデータベース・コンピュータからアクセスできるかどうかを確認します。

DRG-11611 URL store: unknown protocol specified in %1)s

URLに指定されたプロトコルが、Oracle Textユーザー・エージェントが認識できるものではありません。プロトコルを指定しない場合にこれが発生します。この問題の一般的な原因は、相対URLが指定されているが、「Oracle TextのベースURL」オプションに完全に修飾されたURLが設定されていないということです。また、Oracle Textは、http、fileおよびftpのURLにのみ索引を作成できます。失敗したURLを調べて、有効なプロトコルが使用され、サポートされている完全に修飾された書式になっていることを確認します。第10.3.6項「URLコンテンツの索引作成と検索」も参照してください。

DRG-11612 URL store: unknown host specified in %(1)s 

URLが、Oracle Portalリポジトリ・データベース・サーバーから解決できないホストをURLに指定しました。Oracle Portalリポジトリ・サーバーとURLで指定された場所の間にファイアウォールが存在する可能性があります。この場合、プロキシ・サーバーを使用してURLにアクセスする必要がある可能性があります。URLが正しく、かつホストがOracle Portalデータベース・サーバーからアクセスできることを確認します。また、Oracle Portalのプロキシ設定が正しく、かつ索引がそのプロキシ設定を使用していることを確認します。第10.2.2.4項「Oracle Textのプロキシ設定の構成」も参照してください。

DRG-11613 URL store: connection refused to host specified by %(1)s

これは、URLに指定されたホストが解決されたが、HTTPリクエストが拒否されたことを意味します。URLが正しく、かつアクセス可能であることを確認します。

DRG-11614 URL store: communication with host specified in %(1)s timed out

リクエストがタイムアウトになりました。URLが正しく、かつアクセス可能であることを確認します。

DRG-11616 URL store: too many redirections trying to access %(1)s

1つのURLにアクセスすると、別のURLへリダイレクトされる場合があります。これによりさらにリダイレクトが行われ、リダイレクトが続いていくことがあります。発生するリダイレクトの数が多い場合は、このエラーが表示されます。これは、リダイレクトのループが検出されると発生します。

DRG-11622 URL store: unknown HTTP error getting %(1)s

Oracle Textによって明示的に処理されないHTTPエラーが発生しました。このHTTPエラーは、エラー・メッセージで報告されます。

10.3.13 ハングまたはクラッシュする索引作成への対処方法

なんらかの理由でドキュメントまたはURLの索引が作成できない場合は、エラーがログに記録されます。この場合、索引作成処理の正常な完了が妨げられることはありません。ただし、索引作成に失敗したコンテンツは検索できません。

索引作成処理が完全に失敗になる場合があります。この場合、索引に値が適切に移入される前に、索引作成処理が終了します。そのような問題が発生した場合には、オラクル社カスタマ・サポート・センターに報告してください。ただし、場合によっては、失敗の原因になるコンテンツを除外することによって、一時的に問題を回避できます。詳細は、第10.3.13.2項「索引のハングおよびクラッシュの防止」を参照してください。

まれに、索引作成処理により、致命的な失敗が発生することがあります。つまり、索引作成を実行しているサーバー・プロセスが終了する場合です。これが発生すると、次のメッセージが索引作成処理を実行しているクライアントに表示されます。

ORA-03113 End of file on communication channel

注意:

索引作成処理が正常に完了したかどうかが不明な場合は、end of fileエラーが明確に報告されるSQL Plusから処理を繰り返します。


サーバー・プロセスが終了した場合は、このイベントがデータベース・ログに記録されるはずです。データベース・アラート・ログを使用し、作成されたトレース・ファイルの場所を特定します。トレース・ファイルは、ORA-0600またはORA-7445などのエラーを示します。たとえば、このトレース・ファイルは、スクリプトlogcrind.sqlを使用してOracle Text索引を作成するときに発生するエラーを示します。

ksedmp: internal or fatal error
ORA-7445: exception encountered: core dump [drsfdatam()+308] [SIGSEGV] 
[Address not mapped to object] [0x0] [
] []
Current SQL statement for this session:
declare
l_dump_dest varchar2(512);
p_logfile varchar2(100) := 'sync_2012.log';
begin
dbms_output.enable(10000);
select value into l_dump_dest from v$parameter
where name = 'user_dump_dest';
ctxsys.ctx_adm.set_parameter('LOG_DIRECTORY',l_dump_dest);
ctx_output.start_log(p_logfile);
ctx_output.add_event(ctx_output.event_index_print_rowid);
dbms_output.put_line('Log file is: '||ctx_output.logfilename);
wwv_context.sync();
ctx_output.end_log;
end;
----- PL/SQL Call Stack -----
object line object
handle number name
8198f83c 244 package body CTXSYS.DRIDISP
8198f83c 377 package body CTXSYS.DRIDISP
8198f83c 334 package body CTXSYS.DRIDISP
8178acc8 403 package body CTXSYS.DRIDML
827124b0 2033 package body CTXSYS.DRIDDL
827124b0 2090 package body CTXSYS.DRIDDL
817ea0f0 1324 package body CTXSYS.CTX_DDL
8185a488 828 package body TOOLS.WWV_CONTEXT
82d83ed8 18 anonymous block
----- Call Stack Trace -----

10.3.13.1 索引処理がハングしているかどうかの特定

索引作成処理がハングしているかどうかを特定する最も簡単な方法は、Oracle Textのログを有効にして索引作成処理を実行することです。第10.3.9項「Oracle Textの索引作成処理の監視」を参照してください。

このログを有効にすると、行に索引が作成されたときに各行の行IDが記録されるので、索引作成処理が長い間ハングしている行を判別できます。行によっては正常な処理でも数分かかる場合がありますが、処理が予想以上に長くかかる場合は、問題が発生している可能性があります。

一般に、ビューCTX_USER_INDEX_ERRORSは、索引作成のプロセスがハングまたはクラッシュした理由の特定にはあまり有効ではありません。これは、情報はコミットされるまでこのビューに表示されないためで、コミットは索引作成処理がハングしている間は行われません。事実、処理がクラッシュした場合は、コミットはまったく行われません。

URLの索引作成やドキュメントの絞込みなどの処理は、かなり時間がかかる場合があります。これらの処理は両方とも、プロセスをさらに長引かせないためにタイムアウト・メカニズムの対象になります。

  • URLの索引作成のタイムアウト - URLコンテンツを取り出すためのデフォルトのタイムアウトは、30秒です。URLコンテンツを30秒以内に取り出すことができない場合は、取出しが中止されて、失敗エラーがビューCTX_USER_INDEX_ERRORSに報告され、索引作成のプロセスは次の行に進みます。ほとんどの場合、URLコンテンツを取り出すには30秒で十分です。ただし、いったんコンテンツを取り出したら、それに索引を作成する必要があるので、合計時間はURLのタイムアウト値よりも少し長い場合があります。

  • ドキュメント絞込みのタイムアウト - ドキュメントの絞込み処理のタイムアウトは、厳密なタイムアウト制限ではありません。このタイムアウトの設定値は、デフォルトで120秒に設定されています。この設定値は、AUTO_FILTERによる出力の生成を待機する時間です。このタイムアウト値が経過すると、現在の絞込み処理は終了し、現在のドキュメントのコンテンツには索引が作成されず、索引作成プロセスは次のドキュメントに進みます。120秒を経過した後、AUTO_FILTERの出力ファイルのサイズが増え続ける場合は、絞込み処理が続行しています。

このタイムアウト・メカニズムは、問題が発生しやすい2つの分野である、URLおよびドキュメントの索引作成の問題の防止に役立ちます。ただし、索引作成処理が無期限にハングする状況が発生する可能性はまだあります。

10.3.13.2 索引のハングおよびクラッシュの防止

特定のコンテンツが索引作成処理の失敗の原因である場合は、そのコンテンツを索引作成プロセスから除外できます。最初に、問題の原因の行を特定する必要があります。この項では、この方法とそのようなコンテンツを除外するための追加の手順について説明します。

ステップ1: 索引作成の問題の原因である行IDを特定する

これは、print rowid eventを有効にして、Oracle Textのログ機能を使用して行うことができます。生成されたログ・ファイルを調べると、失敗したときの(処理されていた行の)行IDを特定できます。ほとんどの場合、この行IDが索引作成の問題の原因です。

ただし、場合によっては、失敗したときに実際に処理されていた行の行IDがログ・ファイルに書き込まれないことがあります。この場合、その行の次の行IDを確認する必要があります。

  • たとえば、索引を最初に作成したときに、表全体を同期化している場合は、行IDは表の次の行IDになっています。行IDを特定するには、order by句なしで表から選択します。

  • いくつかの保留状態の行のみ更新された場合は、ビューctx_user_pendingを調べて次の行IDを特定します。

索引作成の問題の原因である行を特定したら、それが正しい行であるかどうかを確認する必要があります。これは、その行のみを同期化して失敗を再現することにより行います。

Oracle Text索引が存在しない場合は、次のコマンドを使用して索引を作成します(ただし、索引に値を移入しないでください)。

SQL> exec wwv_context.drop_prefs;
PL/SQL procedure successfully completed.
SQL> exec wwv_context.create_prefs;
PL/SQL procedure successfully completed.
SQL> declare
  2      l_indexes wwsbr_array;
  3  begin
  4      wwv_context.create_missing_indexes(l_indexes);
  5  end;
  6  /
PL/SQL procedure successfully completed.
SQL>

これにより、すべての索引が作成され、保留状態の行はありません。

ステップ2: 問題の行IDを保留中としてマークする

次の手順では、索引作成の問題の原因である可能性がある行を保留中としてマークします。更新する必要のある列は、どの索引を更新するかによって決まります。それらの列の名前を次の例に示します。これらの例にでてくる行IDを、確認対象の行IDと置き換えます。

URL索引(WWSBR_URL_CTX_INDX): absolute_url列には、トリガーによって値が移入されるので、次のようにここでこの列にNULLを設定します。

update wwsbr_url$ set absolute_url=null where rowid = 'AAAOwQAAJAAAU0+AAL';

ドキュメント索引(WWSBR_DOC_CTX_INDX): blob_content列を更新しますが、元のblob_content値を保持します。

update wwdoc_document$ set blob_content = blob_content where rowid = 'AAAOYyAAJAAAWAaAAF'

アイテム索引(WWSBR_THING_CTX_INDX): この索引は、ctxtxt列に作成されたユーザー・データストアを使用します。この列の値は、無意味であり、Oracle Portalでは常に1です。

update wwv_things set ctxtxt = '1' where rowid = 'AAAOwMAAJAAAU0eAAB'

ページ索引(WWSBR_FOLDER_CTX_INDX): アイテム索引と同様です。

update wwpob_page$ set ctxtxt = 1 where rowid = 'AAAOwMAAJAAAWITAAA'

カテゴリ索引(WWSBR_TOPIC_CTX_INDX): アイテム索引と同様です。

update wwv_topics set ctxtxt = 1 where rowid = 'AAAOwMAAJAAAWITAAA'

パースペクティブ索引(WWSBR_PERSP_CTX_INDX): アイテム索引と同様です。

update wwv_perspectives set ctxtxt = 1 where rowid = 'AAAOwMAAJAAAWITAAA'

複数のサブスクライバがインストールされたサイトがある場合は、サブスクライバを切り替えてからでないと必要な行を見ることができない場合があります。サブスクライバを変更するには、次のプロシージャを使用して軽量ユーザーのセッション・コンテキストを設定します。

     wwctx_api.set_context
     (
            p_user_name     IN varchar2,
            p_password      IN varchar2 default null,
            p_company       IN varchar2 default null
      );
OTNを参照

wwctx_apiは、パブリックPL/SQL APIパッケージです。詳細は、OTN(http://www.oracle.com/technology/products/ias/portal)から入手できる『Oracle Portal PL/SQL API Reference』を参照してください。

列の更新後、疑いのある行が保留中のキューに入れられます。

ステップ3: 索引を同期化する

ここで、次のコマンドを使用して、索引を同期化し、同じ問題が発生するかどうかを確認できます。

SQL> exec wwv_context.sync();

このコマンドは、疑いのある行が保留中のキュー内の唯一の行である場合にのみ同期化します。テストを繰り返すために、行を再度更新できます。付録D「sync」も参照してください。

ステップ4: 問題の原因のコンテンツを除外する

索引作成の問題の原因である行を変更または削除して、今後、索引作成処理がハングまたはクラッシュするのを防止できます。たとえば、ドキュメントの場合は、Oracle Portal内の関連するアイテムを編集して、そのドキュメントを削除できます。


注意:

索引作成処理中にシステムがハングまたはクラッシュした場合は、オラクル社カスタマ・サポート・センターに問い合せてください。問題の原因のコンテンツに関連する具体的な詳細情報を提供していただくと、問題の再現が容易になります。


10.4 Oracle Secure Enterprise Search

この項では、Oracle Secure Enterprise Searchと、Oracle Secure Enterprise Searchの「セキュア」ポートレットのサンプルについて説明します。ここでは、次の内容について説明します。

10.4.1 Oracle Secure Enterprise Searchの概要

Oracle Secure Enterprise Searchは、Oracle DatabaseとOracle Textテクノロジ上に構築され、Oracle Database、その他のODBC準拠データベース、IMAPメール・サーバー、Webサーバーが提供するHTML文書、ディスク上のファイルなどの複数のリポジトリに対する一括検索機能を提供します。

Oracle Secure Enterprise Searchは、クローラを使用してドキュメントを収集します。検索するWebサイトに適したクローラをスケジュールできます。ドキュメントは固有のリポジトリに残り、クロールされた情報は索引の作成に使用されます。この索引は、指定したOracle Database内のファイアウォールの内側で保持されます。また、Oracle Secure Enterprise Searchは、コンテンツ管理ソリューションを構築するためのAPIも提供します。

また、Oracle Secure Enterprise Searchは次のものも提供します。

  • データベース内のテキストを検索するための完全なテキスト問合せ言語

  • Oracle DatabaseサーバーとSQL問合せ言語の完全な統合

  • 概念検索やテーマ分析などの高度な機能

  • 異なるリポジトリ間での属性検索を容易にする属性マッピング

  • 使用頻度の高いすべてのファイル形式(150以上)の索引作成

  • 中国語、日本語、韓国語(CJK)、およびUnicodeのサポートを含む完全なグローバリゼーション

OTNを参照

詳細は、次の場所にあるOTNを参照してください。

http://www.oracle.com/technology/products/oses/index.html

Oracle Secure Enterprise Searchは、Oracle Portalに統合されているため、高機能なマルチリポジトリ検索機能をポータル・ページに追加できます。また、Oracle Portalの専用リポジトリをクロールする機能およびパブリック・コンテンツとプライベート・コンテンツを検索する機能も用意されています。

10.4.1.1 Oracle Secure Enterprise Searchのサンプル問合せアプリケーションについて

Oracle Secure Enterprise Searchには、検索結果の問合せと表示に必要な機能を備えたサンプル問合せアプリケーションが含まれています。問合せアプリケーションは、J2EE準拠のWebアプリケーションとして作成されています。サンプル問合せアプリケーションには、Oracle Secure Enterprise Searchの「セキュア」ポートレットも含まれています。

The Oracle Secure Enterprise Searchの「セキュア」ポートレットは、Oracle Portalで使用する検索ポートレットの作成方法を示します。ユーザーが検索問合せを発行すると、検索基準に一致する結果リストが返されます。

Oracle PortalでOracle Secure Enterprise Searchの「セキュア」ポートレットを使用する方法の詳細は、『Oracle Secure Enterprise Search管理者ガイド』の「付録A」を参照してください。

10.4.1.2 Oracle Secure Enterprise Searchの構成について

Secure Enterprise Search (SES)を使用している場合、デフォルトでは、Portalの検索結果にはアイテムまたはページの永続的なURL形式が表示されます。URLを読める形式で表示するには、次の手順を実行します。

  1. Portalスキーマ・パスワードを使用して、sbrsrxml.sqlを実行します。このファイルは、WindowsではORACLE_HOME\upgrade\portal\admin\plsql\wws、UNIXではORACLE_HOME/upgrade/portal/admin/plsql/wwsにあります。

  2. 0を入力します。たとえば、Windowsでは@wws\sbrsrxml.sql 0と入力します。

完全なSESクロールを実行すると、URLは読める形式で表示されます。URLを永続的なURL形式で表示する場合は、sbrsrxml.sqlを実行して1を入力します。

詳細は、『Oracle Secure Enterprise Search管理者ガイド』(http://download.oracle.com/docs/cd/E14507_01/admin.1112/e14130/toc.htm)を参照してください。

10.4.2 Oracle Secure Enterprise Searchの「セキュア」ポートレット

Oracle Secure Enterprise Searchには、Oracle Portalページに埋め込むことができる検索ポートレットが用意されています。

詳細は、『Oracle Secure Enterprise Search管理者ガイド』を参照してください。