ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド
11g リリース1 (11.1.1.7.0)
B72084-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

44 検索サービスの統合

この章では、設計時にWebCenter Portal: Frameworkアプリケーションに検索サービスを統合する方法について説明します。

検索の管理および組込みの詳細は、次を参照してください。

この章には次の項が含まれます:

44.1 検索の概要

WebCenter Portalは、直観的なユーザー・インタフェースを介して情報を検出できる統一された拡張可能なフレームワークを提供しています。このフレームワークでは、ユーザーが表示権限を持つ結果のみを返すことにより、アプリケーションのセキュリティ設定を順守します。WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。

Frameworkアプリケーションの場合、 Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。WebCenterのライブ検索アダプタより高度なスケーラビリティとパフォーマンスを提供する以外にも、Oracle SESは次の理由で有益です。

Oracle SESまたはライブ検索アダプタ機能に加え、ドキュメント・ツールはファイル検索用の独自の検索エンジンを提供しています。これにより、ファイルの検索範囲を絞り込むことができるため、時間が節約される上、検索結果の妥当性が向上します。


関連項目:

アプリケーションへの外部検索エンジンの統合の詳細は、第13.4項「ポータル・ナビゲーション使用によるサイトマップの作成」を参照してください


44.1.1 検索サービスの理解

Oracle SESは、次のリソースについての統合ランキング結果を提供します。

  • ドキュメント(Wikiやブログを含む)

  • お知らせおよびディスカッション

  • WebCenter Portal: Spacesのスペース、リスト、ページ・コンテンツおよびピープルの各リソース


注意:

WebCenter Portal: Spacesアプリケーションには、Spacesのスペース、リスト、ページおよびピープルの各リソースを索引付けするOracle SESクローラが組み込まれています。このクローラはFrameworkアプリケーションではサポートされていません。


44.1.1.1 Oracle SESアダプタを使用した検索の理解

サポート対象のOracle SESのバージョンは10.1.8.4.x以降です。Oracle SESリリース11.1.2.2の使用を強くお薦めします。Oracle SESを使用した検索を実行するには、Oracle SES Administration、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーで追加の構成が必要です。

44.1.1.2 WebCenter Portalの検索アダプタを使用した検索の理解

Oracle SESは最高のパフォーマンスを実現するための優先検索プラットフォームですが、Oracle SESを使用した検索を手動でオーバーライドして、Frameworkアプリケーション検索でWebCenter Portalのオリジナル検索アダプタを使用することもできます。WebCenter Portalの検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのサービスが対象になります。

44.1.1.3 検索結果に対するクリック・アクション

Frameworkアプリケーションでリソース・アクション処理が指定されていない場合は、検索結果をクリックすると、デフォルトのアクションにより、新しいブラウザ・ウィンドウに検索結果がレンダリングされます。また、ドキュメント、ディスカッションまたはお知らせなどの、リソース・ビューアを提供するサービスからの結果が、リソース・ビューアに表示されます。リソース・ビューアとリソース・アクション処理フレームワークの詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.1.2 実行時の処理

実行時に、ユーザーは検索タスク・フローまたは検索ツールバーからグローバルな(アプリケーション全体の)検索を実行し、検索を調整および保存できます。

実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。

44.2 検索サービスの基本構成

この項では、アプリケーションに検索サービスを追加するための手順について説明します。次のサブセクションが含まれます:

44.2.1 構成ロードマップ - Oracle SES

構成プロセス全体のガイドとしてこの項のロードマップを使用してください。


注意:

Oracle SESを使用した検索をオーバーライドして、オリジナルのWebCenter Portalライブ検索アダプタを使用する場合は、Oracle SESの構成は不要です。スキップして第44.2.3項「検索サービスの設計時の追加」に進みます。


図44-1表44-1は、Frameworkアプリケーション内でOracle SESを動作させるために必要な前提条件とタスクの概要を示しています。

図44-1 Frameworkアプリケーション用のOracle SESの構成

図44-1の説明が続きます Install WebCenter Portal: Framework and Oracle SES Configure Oracle SES with an identity management system Set up a Document Service Manager in Oracle SES Create a Federation Trusted Entity Create two crawl sources: Documents Crawler and Discussions Crawler Create a source group for the crawl sources Configure a connection to Oracle SES in JDeveloper Add a Search service task flow to a page in JDeveloper Deploy using JDeveloper Deploy the application Deploy using WLST Deploy using WLS Admin Console (Optional) Secure the connection to Oracle SES with SSL Configure additional search parameters
「図44-1 Frameworkアプリケーション用のOracle SESの構成」の説明

表44-1 Frameworkアプリケーション用のOracle SESの構成

アクター タスク サブタスク

管理者

1. WebCenter PortalおよびOracle SESをインストールします



2. アイデンティティ管理システムを使用してOracle SESを構成します



3. Oracle SESでドキュメント・サービス・マネージャを設定します



4. 次のいずれかのツールを使用して、フェデレーション・トラステッド・エンティティを作成します

  • Oracle SES管理ツール

  • WLST



5. 次のいずれかのツールを使用して、2つのクロール・ソース、ドキュメント・クローラとディスカッション・クローラを作成します

  • Oracle SES管理ツール

  • WLST



6. 次のいずれかのツールを使用して、クロール・ソースのソース・グループを作成します

  • Oracle SES管理ツール

  • WLST


開発者

7. アプリケーションに検索サービスを統合します

7.a JDeveloperでOracle SESへの接続を構成します



7.b JDeveloperでページに検索サービス・タスク・フローを追加します

開発者または管理者

8. 次のいずれかのツールを使用してアプリケーションをデプロイします

  • JDeveloper (開発者)

  • Fusion Middleware Control (管理者)

  • WLST (管理者)

  • WLS管理コンソール(管理者)


管理者

9.(オプション)SSLを使用してOracle SESへの接続を保護します


管理者

10. 次のいずれかのツールを使用して、追加検索パラメータを構成します

  • Fusion Middleware Control

  • WLST

  • WLS管理コンソール



44.2.2 Oracle SESの接続の設定

Oracle SESを使用して検索を実行するには、アプリケーションにOracle SES接続を追加する必要があります。詳細は、第44.3.4項「Oracle SESアダプタを使用する検索の構成」を参照してください。


注意:

WebCenter Portal外のリポジトリを検索するためにOracle SESへの接続を作成し、Fusion Middleware ControlやWLSTでデフォルトの検索クローラとしてのOracle SESの使用をオーバーライドできます。これにより、ユーザーは、ピープルなどの他のFrameworkアプリケーション・リソースを検索できます。


  1. 第44.2.3項「検索サービスの設計時の追加」に従って、検索ツールバーをページに追加します。

  2. Oracle SESへの接続を設定します。アプリケーション・ナビゲータで、「アプリケーション・リソース」を開きます。「接続」ノードを右クリックして「接続の作成」を選択し、「Oracle Secure Enterprise Search」を選択します。

    「アプリケーション・リソース」または「IDE接続」のいずれかで接続を作成します。「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。別のアプリケーションで接続を使用する場合は、「IDE接続」を選択して、接続を再作成する必要がないようにします。


    注意:

    IDEで接続を作成した場合は、後でこの接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。


    ダイアログのフィールドに値を入力します。例:

    1. 「接続名」SESconnectionなどの意味を表す名前を入力します。作成後にこの名前を変更することはできません。(別の接続名を使用するには、新たに接続を作成します。)

    2. 「SOAP URL」に、次のようなOracle SES WebサービスのエンドポイントのURLを入力します。

      http://host:port/search/query/OracleSearch
      
    3. 「フェデレーション・トラステッド・エンティティ」の「エンティティ名」に、Oracle SESインスタンス上でこのアプリケーション用に定義されているトラステッド・エンティティ(wcsearchなど)を入力します。

      トラステッド・エンティティにより、アプリケーションではOracle SESに対してそれ自体を認証し、Oracle SES上で問合せを作成する際にユーザーをアサートできるようになります。このトラステッド・エンティティは、Oracle SES内部のアイデンティティ管理サーバー上に存在する、またはOracle SES内部で作成された任意のユーザーに設定できます。トラステッド・エンティティは、Oracle SESの「グローバル設定」 - 「フェデレーション・トラステッド・エンティティ」ページで検出(または作成)できます。

    4. 「エンティティ・パスワード」に、フェデレーション・トラステッド・エンティティ・ユーザーのパスワードを入力します。

    5. 「アプリケーション構成」で、「検索サービスのデフォルト接続として設定」チェック・ボックスを選択します。

      これにより、アプリケーションでその接続を使用してOracle SESにアクセスできるようになります。検索サービスでは、Oracle SES接続を1つのみ使用します。


      注意:

      接続をデフォルトの接続として作成すると、それがデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。


    6. 「ソース・グループ」に、検索対象のOracle SESソース・グループを入力します。値を指定しないと、Oracle SESインスタンスのすべてのクロール・ソースが検索されます。


      注意:

      ソース・グループには、Oracle SES上の検索可能なデータをセグメント化するよい方法があります。すべての企業データの検索インデックスを保持するOracle SESインスタンスの場合は、ソース・グループを使用して、WebCenter Portalの検索に使用可能な企業データの一部のみを作成できます。ソース・グループの作成の詳細は、Oracle SES管理者ガイドを参照してください。


    7. 「テスト中」「ユーザー名」に、使用しているアプリケーション用に構成されたOracle Identity ManagementサーバーとOracle SES用に構成されたOracle Identity Managementサーバーの両方に存在するユーザーの名前を入力します。

      図44-2のように表示されます。

    8. 図44-2 「Oracle SES接続の作成」ダイアログ

      図44-2の説明が続きます
      「図44-2 「Oracle SES接続の作成」ダイアログ」の説明

    「接続のテスト」をクリックして、ステータスを確認します。

    接続が正常な場合は、「OK」をクリックします。

アプリケーションにOracle SES接続を含めると、「アプリケーション・リソース」パネルでの表示は図44-3のようになります。

図44-3 「アプリケーション・リソース」でのOracle SES接続

図44-3の説明が続きます
「図44-3 「アプリケーション・リソース」でのOracle SES接続」の説明

例44-1に示すように、Oracle SES接続は現在、connections.xmlファイルに含まれ、デフォルト接続はadf-config.xmlファイルに含まれています。

例44-1 adf-config.xmlのOracle SES接続

<ses-properties>
  <connection>SESconnection</connection>
  <data-group>MySources</data-group>
</ses-properties>

注意:

FrameworkアプリケーションをOracle WebLogic管理対象サーバーにデプロイすると、WLSTまたはFusion Middleware Controlを使用してこれを構成できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』を参照してください。


44.2.3 検索サービスの設計時の追加

この項では、検索サービス・タスク・フローについて説明するとともに、検索サービスをアプリケーションに統合する方法についても説明します。次のサブセクションが含まれます:

44.2.3.1 検索サービス・タスク・フロー

表44-2に、検索サービス・タスク・フローを示します。

表44-2 検索サービス・タスク・フロー

タスク・フロー 定義

検索

このタスク・フローでは、検索結果を絞り込んで保存するための豊富な検索機能を提供します。

検索 - 保存済検索

このタスク・フローを使用すると、保存済検索をアプリケーション内で実行するための簡単な起動パッドを作成できます。

検索プリファレンス

このタスク・フローを使用すると、ユーザーは検索するWebCenter Portalサービスを選択できます。

検索ツールバー

このタスク・フローを使用すると、ユーザーは簡単な検索条件を入力し、アプリケーションから検索を実行できます。検索結果はリンクとしてレンダリングされます。


44.2.3.2 検索サービスをページに追加する方法

検索ツールバー・タスク・フローでは、検索サービスをアプリケーションに追加するための最も簡単な方法を提供します。検索ツールバー・タスク・フローをFrameworkアプリケーションに追加するには:

  1. 第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。


    注意:

    WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。


  2. 検索サービスを追加するページを開きます。

  3. リソース・パレットで「カタログ」「WebCenter Portal - サービス・カタログ」「タスク・フロー」と開きます。

  4. 「検索ツールバー」タスク・フローをページにドラッグ・アンド・ドロップします。

  5. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

    ADFライブラリの確認を求めるプロンプトが表示された場合は、「ライブラリの追加」をクリックします。

  6. 検索ツールバーが表示されたページを実行します。

    アプリケーション・ナビゲータでこのアプリケーションを右クリックし、「実行」を選択します。操作の完了に時間がかかる場合があります。

    セキュリティの定義時に作成したユーザー名と資格証明を入力します。


    注意:

    検索サービスで結果を返すには、その他のWebCenter Portalサービスがアプリケーションに組み込まれていることが必要です。


44.2.3.3 検索サービス・タスク・フローのパラメータを変更する方法

検索サービス・タスク・フロー・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作をカスタマイズできます。たとえば、特定のサービス、ドキュメントのタイプおよびスペースのみを含めるように検索結果を制限したり、検索ボックスのサイズを変更できます。


関連項目:

タスク・フロー・パラメータを使用して検索サービスをカスタマイズする方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のパラメータを設定して検索を絞り込む方法に関する項を参照してください


ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を確認して調整するには:

  1. タスク・フローを含むページの下部にある「バインディング」タブ(「ソース」タブの隣)をクリックし、「タスク・フロー・バインディングの編集」ダイアログに移動します。

  2. 「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図44-4に、「実行可能ファイル」セクションの検索タスク・フローの例を示します。

    図44-4 ページ・データ・バインディング定義

    図44-4の説明が続きます
    「図44-4 ページ・データ・バインディング定義」の説明

  3. タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。

  4. 「タスク・フロー・バインディングの編集」ダイアログ(図44-5)で、フィールドをダブルクリックし、既存の値を変更するか新しい値を追加して、バインディング・パラメータ値を改訂します。

    図44-5 検索タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ

    図44-5の説明が続きます
    「図44-5 検索タスク・フロー用の「タスク・フロー・バインディングの編集」ダイアログ」の説明

  5. 終了したら、「OK」をクリックします。

  6. ページを保存して実行し、結果を表示します。

表44-3に、検索サービス・タスク・フロー固有のプロパティを示します。

表44-3 検索サービス・タスク・フローのパラメータ

プロパティ 説明 タスク・フロー

customAttributes

検索結果を表示する際に表示するカスタム属性のリスト。

検索結果に1つ以上のカスタム属性を組み込むには、これを、カスタム属性名のカンマ区切りリストに設定します。オプションのラベル接頭辞には、関連付けられているカスタム属性名ではなく、表示するカスタム属性名を指定することもできます。label:nameの形式を使用します。

検索

検索ツールバー

hideRefiners

検索結果を表示する際に非表示にする絞込み条件のリスト。

1つ以上の絞込み条件を非表示にするには、これを、絞込み条件名のカンマ区切りリストに設定します(作成者、日付、スペース、コンテンツおよびタグから選択)。

検索

検索ツールバー

keywordsInputRendered

入力ボックスを表示または非表示にします。

入力ボックスを表示するにはtrue(デフォルト)に、非表示にするにはfalseに設定します。

検索

mimeType

検索を制限するMIMEタイプのリスト。

検索を特定のドキュメント・タイプに制限するには、これを、ドキュメントのMIMEタイプ(PDF、PPT、DOC)のカンマ区切りリストに設定します。

これは、ドキュメント・ツールにoracle.webcenter.doclibも設定できます。

注意: 検索をMicrosoft WordドキュメントとWebCenter Portalページに制限するには、このパラメータをapplication/mswordに設定し、serviceIdsパラメータをoracle.webcenter.doclib,oracle.webcenter.pageに設定します。

関連項目: 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の特定のドキュメント・タイプの検索に関する項を参照してください。

検索

検索ツールバー

searchScope

検索範囲を制限する一意のIDのリスト。検索をスペースのリストに制限するには、これを、スペースのGUIDのカンマ区切りリストに設定します。

例: #{spaceContext.currentSpaceGUID}またはs8bba98ff_4cbb_40b8_beee_296c916a23ed

検索

検索ツールバー

resourceScope

検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのGUIDに設定します。

例: #{spaceContext.currentSpaceGUID}またはs8bba98ff_4cbb_40b8_beee_296c916a23ed

注意: このパラメータは非推奨です。これは、後方互換性のためにのみ組み込まれています。

検索

searchBoxSize

検索ボックスのサイズを制限する値。

デフォルト値は42です。検索ボックスの長さを短くするには、より小さな値(30など)を入力します。これにより、検索タスク・フローの検索ボックスのサイズも変更されます。

検索ツールバー

serviceIds

検索結果を表示する際に組み込むサービスやエグゼキュータのIDのリスト。

コンテンツ・サーバーのピープル・プロファイルとドキュメントのみを表示するには、このパラメータをoracle.webcenter.peopleconnections.profile, oracle.webcenter.doclibに設定します。何も指定しない場合は、すべてのサービスが検索されます。

サービスIDのリストは、表F-7「サービスID」を参照してください。

検索

検索ツールバー

resourceId

検索キーワードまたは保存済検索GUIDを入力します。

注意: このパラメータは社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、この値は変更しないでください。この値を変更する場合は、resourceTypeも指定する必要があります。

検索

resourceType

resourceIdパラメータでキーワードや保存済検索GUIDを検索するかどうかを指定するマーカー。

注意: 自動的に設定されるこの値は、社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、これは変更しないでください。

検索

scope

検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのスコープ・オブジェクト、たとえば、#{serviceCtx.scope}に設定します。

注意: このパラメータは非推奨です。かわりに、searchScopeパラメータを使用します。(このパラメータに値を設定した場合は、searchScopeの値は無視されます。)

検索ツールバー



注意:

すべての保存済検索タスク・フローと検索プリファレンス・タスク・フローには、一意のプロパティはありません。


44.2.4 検索サービスのセキュリティの設定

ユーザーを検証および認証するために、アイデンティティ管理システムを使用してOracle SESアダプタを構成する必要があります。これは、検索で、アクセス権限に基づいてユーザーが表示を許可されている結果のみを返すようにするために必要です。WebCenter Portalでは、Oracle SESとの通信時にアイデンティティ伝播を使用するため、WebCenter Portalのユーザー・ベースはOracle SESのユーザー・ベースに一致している必要があります。一致させるための方法の1つとしては、WebCenter PortalとOracle SESを同一のアイデンティティ管理システムに設定することがあげられます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のOracle SESの構成に関する項を参照してください。

WebCenter Portalのオリジナルの検索アダプタは、個々のサービスを使用して、検索を実行するユーザーが結果を表示できるようにします。検索結果は、ユーザー権限に基づいて返されます。認証されない場合は、問合せからパブリック・コンテンツのみが返されます。ADFで保護されたFrameworkアプリケーションの認証済ユーザーのみが検索を保存できます。

WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。

44.3 検索サービスの詳細情報

この項では、このサービスで使用可能なオプション機能について説明します。次のサブセクションが含まれます:


注意:

検索サービスREST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenterのオリジナルの検索アダプタを使用した検索ではサポートされていません。


44.3.1 検索タスク・フローの追加

検索タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索タスク・フローをページにドラッグ・アンド・ドロップします。

検索ビューを含むページを実行するには:

  1. アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。

  2. ADFセキュリティを構成した場合は、ユーザー名とパスワードを入力し、「発行」をクリックします。ます。

  3. フィールドに検索条件を入力し、「検索」アイコンをクリックします。アプリケーションに検索サービス自体のデータ以外があまり移入されていない場合は、結果はほとんど表示されません。

44.3.2 検索 - 保存済検索タスク・フローの追加

検索 - 保存済検索タスク・フローを追加して、アプリケーション内で保存済検索を実行するための簡単な起動パッドを提供できます。このタスク・フローをFrameworkアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、検索 - 保存済検索タスク・フローをページにドラッグ・アンド・ドロップします。

このタスク・フローは、クリックされると保存済検索を実行するリンクをレンダリングします。

44.3.3 検索プリファレンス・タスク・フローの追加

検索プリファレンス・タスク・フローを使用すると、ユーザーはどのWebCenter Portalサービスを検索するのかを制御できます。デフォルトでは、すべての有効なサービスが検索対象として選択されます。ユーザーは、検索結果を表示しないサービスを無効化できます。また、検索結果に表示するサービスの順序を選択することもできます。たとえば、ドキュメント・ツールの検索結果が他のサービスの検索結果より遥かに有用だと気付く場合があります。

検索プリファレンス・タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索プリファレンス・タスク・フローをページにドラッグ・アンド・ドロップします。

44.3.4 Oracle SESアダプタを使用する検索の構成

WebCenter Portal: Frameworkアプリケーションは、デフォルトの検索アダプタとしてOracle Secure Enterprise Search (SES)を自動的に設定しますが、Oracle SES、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーに追加の構成が必要です。Oracle SESアダプタを使用する検索を設定する手順の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の検索サービスの管理に関する項を参照してください。

すべての構成手順を完了したら、WebCenter Portalの検索でOracle SESの結果が含まれていることを検証します。

  1. アプリケーション・ナビゲータで、検索ツールバーを使用して作成したページを右クリックし、「実行」をクリックします。

    アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。

  2. セキュリティの定義時に作成したユーザー名と資格証明を入力します。

  3. 「送信」をクリックします。

    ページがロードされると、検索ツールバーが表示されます。

    図44-6に、Oracle SESがクロールする前の、検索文字列webcenterのサンプルの結果ページを示します。

    図44-7に、Oracle SESが構成されてクロールした後の、サンプルの結果ページを示します。

    図44-7 グローバル検索結果

    検索結果

関連項目:

Oracle Fusion Middlewareドキュメント・ライブラリのOracle SESのドキュメント(WebCenter Portalの製品分野に存在)


44.3.5 WebCenter Portalの検索アダプタを使用する検索の構成

Oracle SESで手動で検索を上書きしたり、WebCenter Portalの元のライブ検索アダプタを使用してFrameworkアプリケーション検索を実行したりできます。WebCenter Portalの検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのサービスが対象になります。

WebCenter Portalの検索アダプタを使用して検索できるようにするには、adf-config.xmlファイルを編集して、crawl-propertiesのすべての有効な属性をfalseにするか(例44-2)、またはcrawl-properties全体をコメント・アウトします(例44-3)。

例44-2 adf-config.xmlでFalseに設定されたクロール・プロパティ

  <searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
    <display-properties>
      <common numSavedSearches="5"/>
      <region-specific>
        <usage id="simpleSearchResultUIMetadata" numServiceRows="5"/>
        <usage id="searchResultUIMetadata" numServiceRows="5"/>
        <usage id="localToolbarRegion" numServiceRows="5"/>
      </region-specific>
    </display-properties>
    <execution-properties timeoutMs="7000" prepareTimeoutMs="3000"/>
    <crawl-properties fullCrawlInterval="P5D" enableWcServicesCrawl="false"
                      enableWcDiscussionsCrawl="false" enableWcUcmCrawl="false"/>
    <ses-properties>
      <connection/>
      <data-group/>
    </ses-properties>
  </searchC:adf-search-config> 

例44-3 adf-config.xmlでコメント・アウトされたクロール・プロパティ

  <searchC:adf-search-config
xmlns="http://xmlns.oracle.com/webcenter/search/config">
    <display-properties>
      <common numSavedSearches="5"/>
      <region-specific>
        <usage id="simpleSearchResultUIMetadata" numServiceRows="5"/>
        <usage id="searchResultUIMetadata" numServiceRows="5"/>
        <usage id="localToolbarRegion" numServiceRows="5"/>
      </region-specific>
    </display-properties>
    <execution-properties timeoutMs="7000" prepareTimeoutMs="3000"/>
    <!--
    <crawl-properties fullCrawlInterval="P5D" enableWcServicesCrawl="true"
                      enableWcDiscussionsCrawl="true" enableWcUcmCrawl="true"/>
    -->
    <ses-properties>
      <connection/>
      <data-group/>
    </ses-properties>
  </searchC:adf-search-config> 

44.3.6 検索サービスJava APIの使用

カスタム・コンポーネントでは、検索サービスAPIを実装してそのコンテンツをWebCenter Portalの検索に公開できます。

詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

44.3.7 検索サービスREST APIの使用

WebCenter Portalは、検索サービスをサポートするためのREST APIを提供しています。検索サービスREST APIを使用して検索を読取り(取得)します。検索のキーワードと範囲を指定できます。たとえば、iPhoneではすべてのスペース、ドキュメントおよびWikiページ内の「smith」を検索できます。また、APIによって、検索サービスの上にカスタマイズされた検索ユーザー・インタフェースを作成できます。

この項では、検索サービスに関連したREST APIについて説明します。次のサブセクションが含まれます:

REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。

44.3.7.1 検索エントリ・ポイント

各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。検索サービスのエントリ・ポイントを検索するには、次のresourceTypeを持つリンク要素を検索します。

urn:oracle:webcenter:search

対応するhrefまたはtemplate要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、検索サービスを操作します。

リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。

リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。

44.3.7.2 検索リソース・タイプの分類

クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。

検索サービスの分類は次のとおりです。

urn:oracle:webcenter:search
   urn:oracle:webcenter:search:results

サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。

検索リソース内のコレクション・リソースは、ページ区切り(startIndexおよびitemsPerPage)をサポートします。その他の問合せパラメータ(searchprojection)はサポートされていません。

44.3.7.3 セキュリティ上の考慮事項

認証は、検索REST APIのメソッドを使用する前に必要です。

一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。

44.3.7.4 リソース・タイプの検索

この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:

44.3.7.4.1 urn:oracle:webcenter:search:results

このリソース・タイプを使用して、キーワードと属性固有の条件を含む問合せの読取り(GET)に使用するURIを識別します。

リクエストはURLによって表され、レスポンスは検索結果のリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。

レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。

resultsへのナビゲーション・パス

この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:

resourceindex
   search
resourceindex
   spaces
      spaces:resourceindex
         spaces:search

resultsでサポートされるメソッド

次のメソッドは、このリソースによりサポートされています:

  • GET

    • リクエスト - ボディ: なし、パラメータ: serviceIdqscopeGuidrefinersstartIndex (ページ区切り)、itemsPerPage (ページ区切り)

    • レスポンス - ボディ: 検索結果および絞込み条件(refiners=trueの場合)

ここで:

  • serviceId={serviceId1}[,{serviceId2}...]

    オプション: これにより、検索が、oracle.webcenter.doclibやoracle.webcenter.pageなどの1つ以上のWebCenter Portalサービスに絞り込まれます。たとえば、これをoracle.webcenter.doclibに設定すると、ドキュメントのみが検索されます。省略すると、この検索はすべてのサービスについて実行されます。


    関連項目:

    サービスIDのリストは、表F-7「サービスID」を参照してください。


  • q={queryString}

    検索は、次の形式を使用して指定できます

    [[field1:[operand]][:]value1[;field2:operand:value2]]
    

    ここでは、複数の句が暗黙のANDによって結合され、セミコロン(;)によって構文的に区切られます。大かっこ[]は、オプションの値を示します。それぞれの句は、次のタイプのいずれかになります。

    • keywords: コロン(:)のセパレータを使用しない単純な文字列

    • attribute1:value1: attribute1はvalue1に等しいということを意味する句のショートカット

    • attribute1:operand1:value1: attribute1とvalue1との間のブール条件を取得する句

    検索属性には次が含まれますが、任意の属性名にできます。

    • title - 項目の名前またはタイトル

    • description - 項目の説明

    • creator - 項目の作成者またはコントリビュータ

    • date - 項目が最後に変更された日付

    • tags - 項目に含まれている可能性があるタグ・ワード(ページに適用可能)

    属性は検索結果で返すことができます。この場合、data=field1[,field2]の形式になります。

    有効なオペランド:

    • equals - 文字列および数値

    • contains - 文字列

    • gt (より大きい) - 数値

    • gte (より大きいか等しい) - 数値

    • lt (より小さい) - 数値

    • lte (より小さいか等しい) - 数値

  • scopeGuid={...}

    オプション: 有効範囲に関連付けられているGUID。

  • refiners={true|false}

    オプション: 絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。

例44-4 RESTコマンドの検索

http://examplehost:8888/rest/api/searchresults?q=document&serviceId=oracle.webcenter.doclib,oracle.webcenter.page&utoken={utoken}

http://examplehost:8888/rest/api/searchresults?q={keywords};dDocName:contains:handbook&data=dDocName,dOriginalName

詳細は、第53.5.2.5項「テンプレート」を参照してください。

resultsの書込み可能要素

表44-4に、このリソースに書込み可能な要素をリストします。

表44-4 resultsの書込み可能要素

要素 タイプ 必須 制約 説明

author

String


1文字以上の文字

問合せ作成者の名前

resourceId





serviceId





title





description

String

いいえ

1文字以上の文字

問合せの説明

lastModifiedDate





size






resultsからリンクされるリソース・タイプ

表44-5に、クライアントがこのリソースにリンクできるリソース・タイプを示します。

表44-5 searchに関連するリソース・タイプ

rel リソース・タイプ

self



44.3.8 検索サービス・データ・コントロールの使用

検索サービス・データ・コントロールを使用して、Frameworkアプリケーションまたはカスタム・タスク・フローで動作するカスタマイズされた検索ユーザー・インタフェースを作成できます。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、それをWebCenter Portal: Spacesアプリケーションのリソース・カタログに追加して、サイト・テンプレートを作成できます。

44.3.8.1 検索データ・コントロールのメソッド、属性およびクラス

検索データ・コントロールにはsearchSesメソッドが含まれています。表44-6では、検索絞込み条件を設定し、検索の有効範囲を制限するためのパラメータについて説明します。

表44-6 searchSes入力パラメータ

パラメータ 必須かどうか タイプ 説明

scopeGuid

いいえ

String

結果をスペースでフィルタするためのGUID値。

serviceId

いいえ

String

アイテムのサービスID。たとえばoracle.webcenter.doclibはドキュメントのみを検索します。省略すると、すべてのサービスを対象に検索します。

keywords

はい

String

検索文字列。

predicates

いいえ

リスト

条件のコレクション。

fetchRefiners

いいえ

Boolean

絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。

startIndex

はい

整数

結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。

itemsPerPage

はい

整数

表示する結果数。


searchSesメソッドは次のコレクションを返します。

44.3.8.1.1 SearchServiceDCRows
  • author

  • comments

  • createDate

  • description

  • iconPath

  • language

  • largeIconPath

  • lastModifiedDate

  • resourceId

  • scopeGuid

  • serviceId

  • size

  • tagWords

  • title

  • type

  • urlSearchServiceDCRefiner

44.3.8.1.2 SearchServiceDCRefiner

element

44.3.8.1.3 SearchServiceDCRefinement
  • keywords

  • scopeGuid

  • serviceId

  • 条件のコレクション

44.3.8.2 検索データ・コントロールの統合

検索データ・コントロールを使用するには:

  1. JDeveloperで、Oracle SES接続を備えたFrameworkアプリケーションを作成します。接続が使用可能になると、「データ・コントロール」パレットに検索データ・コントロールが表示されます。

  2. SearchServiceDCからsearchSesメソッドをドラッグ・アンド・ドロップします。

  3. 「ADFパラメータ・フォーム」を選択し、「フォーム・フィールドの編集」ダイアログを開きます。「OK」をクリックします。

  4. SearchServiceDCResult戻りオブジェクト・タイプからフォーム上に行アクセッサをドラッグし、「表」 - 「ADF読取り専用表」を選択します。「OK」をクリックします。

  5. ページを実行し、適切な値を入力します。例:

    • keywords: 任意の検索文字列

    • startIndex: 0

    • itemsPerPage: 10

アプリケーションへのデータ・コントロールの追加の詳細は、第7.1.2項「WebCenter PortalのAPIの理解」を参照してください。

44.3.9 検索サービスのアダプタの構築

検索アダプタを使用してその他のソースを検索結果に追加できます。これらの検索アダプタは、WebCenter Portalフレームワークによって自動的に検出され、アプリケーションで検索結果を生成する際に統合されます。その後、アプリケーションでカスタム・コンポーネントを検索サービスに公開すると、このコンポーネントはフェデレーテッド検索に組み込まれます。

この項では、検索アダプタを使用して、WebCenter Portalの検索を拡張する方法について説明します。次のサブセクションが含まれます:

44.3.9.1 検索ソースの追加方法

検索ソースを新たに追加するには、入力される問合せを管理し、検索結果を返す新規ソース用のJavaクラスを作成する必要があります。必要なJavaクラスのアプリケーションへの追加後、これを検索サービスに登録する必要があります。

検索を行うと、問合せオブジェクトと検索対象の列を示すList<QName>とともにQueryManager.createRowQueryHandlerが、検索フレームワークでコールされます。フレームワークで、戻り値としてQueryHandler<Row>を受け取ります。

QueryHandlerは、QueryFederatorまたはQueryExecutorの場合もあります。QueryFederatorは、単に他のQueryHandlersのコレクションです。QueryFederatorでは、フレームワークは子QueryHandlersのリストを取得し、すべてのQueryExecutorsが見つかるまで再帰的に検索できます。

フレームワークでQueryExecutorexecuteメソッドがコールされ、QueryResult<Row>が取得されます。これは、結果の行を反復して取得するjava.util.Iterator<Row>の拡張です。

想定される実装は、次のクラスの作成です。

  • SampleQueryManager ...

  • SampleRowQueryExecutor ...

  • SampleRowQueryResult ...

  • SampleRow ...


注意:

Frameworkアプリケーションでは、Oracle Secure Enterprise Searchがデフォルトの検索プラットフォームとして設定されています。かわりにこのサンプル・コードをWebCenter Portalのライブ検索アダプタで動作させるには、adf-config.xmlcrawl-propertiesを編集する必要があります。詳細は、第44.3.5項「WebCenter Portalの検索アダプタを使用する検索の構成」を参照してください。


類似の問合せマネージャとともに新しい検索ソースを追加するには:

  1. Oracle JDeveloperで、検索ソースを追加するアプリケーションを開きます。

  2. WebCenter共通ライブラリがプロジェクトに含まれていることを確認します。

    1. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。

    2. 図44-8に示すように、「WebCenter共通」ライブラリが含まれていない場合は、「ライブラリの追加」をクリックしてこれを選択します。

      図44-8 WebCenter共通ライブラリ

      図44-8の説明が続きます
      「図44-8 WebCenter共通ライブラリ」の説明

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

  3. SampleQueryManager.javaと呼ばれるクラスを作成します(例44-5)。

    例44-5 SampleQueryManager.java

    package mycompany.myproduct.myapp.mycomponent.query;
    import java.util.List;
    import oracle.webcenter.search.QName;
    import oracle.webcenter.search.Query;
    import oracle.webcenter.search.QueryExecutor;
    import oracle.webcenter.search.QueryManager;
    import oracle.webcenter.search.Row;
    public class SampleQueryManager
      implements QueryManager
    {
      public SampleQueryManager()
      {
      }
      public QueryExecutor<Row> createRowQueryHandler(Query query,
                                                      List<QName> columns)
      {
        return new SampleRowQueryExecutor(query, columns);
      }
    }
    
  4. SampleRowQueryExecutor.javaという名前のクラスを作成します(例44-6)。

    例44-6 SampleRowQueryExecutor.java

    package mycompany.myproduct.myapp.mycomponent.query;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import static oracle.webcenter.search.AttributeConstants.DCMI_EXTENT;
    import static oracle.webcenter.search.AttributeConstants.DCMI_MODIFIED;
    import static oracle.webcenter.search.AttributeConstants.DCMI_CREATOR;
    import static oracle.webcenter.search.AttributeConstants.DCMI_TITLE;
    import static oracle.webcenter.search.AttributeConstants.DCMI_URI;
    import static oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER;
    import static oracle.webcenter.search.AttributeConstants.WPSAPI_ICON_PATH;
    import oracle.webcenter.search.QName;
    import oracle.webcenter.search.Query;
    import oracle.webcenter.search.QueryExecutor;
    import oracle.webcenter.search.QueryHandler;
    import oracle.webcenter.search.QueryResult;
    import oracle.webcenter.search.Row;
    public class SampleRowQueryExecutor
      implements QueryExecutor<Row>
    {
      private static final int PRESET_ESTIMATED_RESULT_COUNT = 10;
      private static final int PRESET_VALUES_BATCH_SIZE = 5;
      private static final int MAX_RESULT_LIMIT = 100;
      private int m_resultStart;
      private int m_resultLimit;
      private Query m_query;
      private List<QName> m_columns;
      private Map<String, String> m_properties;
      public SampleRowQueryExecutor(Query query, List<QName> columns)
      {
        m_query = query;
        m_columns = columns;
        m_properties = new HashMap<String, String>();
        // In actuality you may want to make sure this string is translatable
        m_properties.put(QueryHandler.TITLE, "Sample");
      }
      /**
       * Create several rows for "batchRepeat" times.
       */
      private static void createRows(List<Row> rows, int batchRepeat)
      {
        while (batchRepeat-- > 0)
        {
          rows.add(new SampleRow("23847", "Initial Sorting of Tables", 
                                 "Bar", "2006-06-08", 5120));
          rows.add(new SampleRow("4827445", "Support for facelets?", 
                                 "Foo", "2006-04-17", 1400000));
          rows.add(new SampleRow("952787", "For Thomas Kincade's validation demo", 
                                 "Tiger", "2006-01-09", 1300000));
          rows.add(new SampleRow("4394588", "Page not showing in WYSIWYG fashion",
                                 "Ken Swartz", "2006-04-27", 3000));
          rows.add(new SampleRow("3920", "Tree table", 
                                 "Scott", "2006-03-24", 1200));    
        }
      }
      /**
       * Instead of doing a query execution here, 
       * just create a bunch of rows.
       */
      public QueryResult<Row> execute()
      {
        List<Row> rows = new ArrayList<Row>();
        // To hit a certain count here but not go over the max
        int realLimit = Math.min(MAX_RESULT_LIMIT, m_resultLimit);
        createRows(rows, (realLimit / PRESET_VALUES_BATCH_SIZE));
        // Create the QueryResult
        QueryResult<Row> ret = new SampleRowQueryResult(rows.iterator());
        ret.getProperties().put(QueryResult.ESTIMATED_RESULT_COUNT, 
                                Integer.toString(PRESET_ESTIMATED_RESULT_COUNT));
        return ret;
      }
      /**
       * Remember the result start.
       */
      public void setResultStart(int resultStart)
      {
        m_resultStart = resultStart;
      }
      /**
       * Store away the result limit to use in the execute
       * to only get that number of results back.
       */
      public void setResultLimit(int resultLimit)
      {
        m_resultLimit = resultLimit;
      }
      /**
       * Expose our properties map containing our title.
       */
      public Map<String, String> getProperties()
      {
        return m_properties;
      }
    }
    
  5. SampleRowQueryResult.javaという名前のクラスを作成します(例44-7)。

    例44-7 SampleRowQueryResult.java

    package mycompany.myproduct.myapp.mycomponent.query;
    import java.util.Iterator;
    import oracle.webcenter.search.util.WrapperQueryResult;
    import oracle.webcenter.search.Row;
    public class SampleRowQueryResult extends WrapperQueryResult<Row>
    {
      public SampleRowQueryResult(Iterator<Row> rows)
      {
        super(rows);
      }
    }
    
  6. SampleRow.javaという名前のクラスを作成します(例44-8)。

    例44-8 SampleRow.java

    package mycompany.myproduct.myapp.mycomponent.query;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import oracle.webcenter.search.QName;
    import oracle.webcenter.search.Row;
    import static oracle.webcenter.search.AttributeConstants.DCMI_EXTENT;
    import static oracle.webcenter.search.AttributeConstants.DCMI_MODIFIED;
    import static oracle.webcenter.search.AttributeConstants.DCMI_CREATOR;
    import static oracle.webcenter.search.AttributeConstants.DCMI_TITLE;
    import static oracle.webcenter.search.AttributeConstants.DCMI_URI;
    import static oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER;
    import static oracle.webcenter.search.AttributeConstants.WPSAPI_ICON_PATH;
    public class SampleRow implements Row
    {
      private Map<QName, Object> m_storage = new HashMap<QName, Object>();
      private DateFormat m_dateFormat = new SimpleDateFormat("yyyy-MM-dd");
      SampleRow(String id, String title, 
                String creator, String lastModified,
                int size)
      {
        m_storage.put(DCMI_IDENTIFIER, id);
        // Only if you have an external URL to go to
        // m_storage.put(DCMI_URI, "http://my.external.url");
        m_storage.put(DCMI_TITLE, title);
        m_storage.put(DCMI_CREATOR, creator);
        // The below path points to a path accessible in the classpath to an icon
        m_storage.put(WPSAPI_ICON_PATH, "/adf/webcenter/search_qualifier.png");
        try
        {
          Date date = m_dateFormat.parse(lastModified);
          Calendar cal = Calendar.getInstance();
          cal.setTime(date);
          m_storage.put(DCMI_MODIFIED, cal);
        }
        catch (ParseException e)
        {
          e.printStackTrace();
        }
        m_storage.put(DCMI_EXTENT, new Long(size));
      }
      public Object getObject(QName columnName)
      {
        return m_storage.get(columnName);
      }
      public Iterator<QName> getColumns()
      {
        return m_storage.keySet().iterator();
      }
    }
    

44.3.9.2 カスタム・アダプタの登録方法

問合せマネージャを検索サービスに登録するには、service-definition.xmlファイルを編集する必要があります。SampleQueryManager行は、カスタム・アダプタの問合せマネージャの実装を検索サービスに対して公開するため、カスタム・アダプタはすべての検索ユーザー・インタフェースに含まれるようになります。

エントリは、例44-9のようになります。

例44-9 service-definition.xml内のSampleQueryManagerエントリ

<service-definition id="mycompany.myproduct.myapp.mycomponent"
   version="11.1.1.0.0">
  <resource-view taskFlowId="/somepath/somefile.xml#someId"
                    authorizerClass="some.service.id.Authorizer1"/>
  <name>Custom Component 1</name>
  <description>Description for Custom Component 1</description>
  <search-definition xmlns="http://xmlns.oracle.com/webcenter/search"
      id="mycompany.myproduct.myapp.mycomponent.query" version="11.1.1.0.0">
  <query-manager-class>
mycompany.myproduct.myapp.mycomponent.query.SampleQueryManager
  </query-manager-class>
  </search-definition>
</service-definition>

resource-viewタグ(およびWebCenter Portalのリソース・アクション処理フレームワーク)の詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.3.9.3 検索アダプタの属性

この項では、サービスの検索に使用可能な属性について説明します。次のサブセクションが含まれます:

44.3.9.3.1 検索可能な属性

WebCenter Portalの検索ユーザー・インタフェースでは、キーワード、日付およびユーザーの3つのフィールドに基づいて検索を公開します。各サービスは、その固有の検索実装において、これらのフィールドがその機能を最大限発揮できるようにします。少なくとも、キーワード・フィールドはサポートしています。独自の検索アダプタを定義する場合は、第44.3.9.3.8項「選択可能属性」で説明しているように、これらのフィールドを使用してアダプタの機能を最大限発揮できるようにする必要があります。

44.3.9.3.2 キーワード

デフォルトでは、キーワード・フィールドはoracle.webcenter.search.TextPredicateに含まれています。このフィールドには、複数の単語を、複数の単語を解釈する方法を決定するサービスとともに指定できます。コールがサービスに届く前に検索サービスでトークン化を実行することはありませんが、次にそのガイドラインをいくつか示します。

  • 複数のトークンが引用符で囲まれている場合は、1つの単語として解釈されます。

  • OR演算子が明示的に設定されていないかぎり、キーワード・フィールド内の単語間のデフォルトの結合はANDであると見なされます。

44.3.9.3.3 日付の条件

最終変更日による問合せ結果のフィルタをサポートする検索サービスでは、WPSAPIのサービス実装で問合せオブジェクトからアクセス可能な(oracle.webcenter.search.AttributeConstants.DCMI_MODIFIEDを使用する)oracle.webcenter.search.AttributePredicateの使用をサポートしている必要があります。サポートされているコンパレータには次が含まれている必要があります。

  • oracle.webcenter.search.ComparatorConstants.GREATER_THAN

  • oracle.webcenter.search.ComparatorConstants.GREATER_THAN_OR_EQUALS

また、これらのコンパレータには、次が含まれている場合もあります。

  • oracle.webcenter.search.ComparatorConstants.EQUALS

  • oracle.webcenter.search.ComparatorConstants.NOT_EQUALS

  • oracle.webcenter.search.ComparatorConstants.LESS_THAN

  • oracle.webcenter.search.ComparatorConstants.LESS_THAN_OR_EQUALS

比較用のリテラルは、java.util.Calendarタイプである必要があります。

44.3.9.3.4 複雑な日付の条件

日付間にはBETWEEN句を使用できます。複雑な日付の条件では、単純なAttributePredicateではなく、1つのGREATER_THAN AttributePredicateと1つのLESS_THAN AttributePredicateに加え、AND論理積演算子を含むComplexPredicateを使用します。ComplexPredicateは、AND演算子を残りのフィールド(キーワードおよびユーザー・フィールド)に適用する必要があります。

このケースとデフォルトのケースを区別するには、サービス作成者は、日付条件の条件のタイプをチェックする必要があります。AttributePredicateの場合は、デフォルトのケースです。ComplexPredicateの場合は、特殊なケースです。

44.3.9.3.5 ユーザー条件

ユーザーによる問合せ結果のフィルタをサポートする検索では、WPSAPIのサービス実装で問合せオブジェクトからアクセス可能な(oracle.webcenter.search.AttributeConstants.WPSAPI_MODIFIERを使用する)oracle.webcenter.search.AttributePredicateをサポートしている必要があります。

サポートされているコンパレータには、次が含まれている必要があります。

  • oracle.webcenter.search.ComparatorConstants.EQUALS

  • oracle.webcenter.search.ComparatorConstants.CONTAINS

  • oracle.webcenter.search.ComparatorConstants.STARTS_WITH

  • oracle.webcenter.search.ComparatorConstants.ENDS_WITH

比較用のリテラルは、java.lang.Stringタイプである必要があります。

44.3.9.3.6 複雑なユーザー条件

サービス作成者は、ユーザー条件の条件のタイプをチェックする必要があります。AttributePredicateがデフォルトのケースです。

44.3.9.3.7 アクセス

検索サービス(コーラー)では、問合せのgetPredicate()メソッドが、キーワードを保持するoracle.webcenter.search.TextPredicate、日付条件を保持するoracle.webcenter.search.ComplexPredicate、およびユーザー条件を保持するoracle.webcenter.search.AttributePredicateを連結するoracle.webcenter.search.ComplexPredicateを返す可能性があることを想定しています。

44.3.9.3.8 選択可能な属性

次の選択可能属性/列が、検索実装で検索アダプタによってサポートされる必要があります。

  • タイトル(必須)

    指定されている場合は、返されるリソースごとに、検索サービス・ユーザー・インタフェースにタイトル列を表示できます。タイトル列にQNameAttributeConstants.DCMI_TITLEを指定することを強くお薦めします。

  • リソースID(必須)

    検索サービスでリンクをレンダリングし、サービスのリソース・ビュー(または任意の宣言済ビュー)に移動できるようにする一意の識別子を通信するリソースについては、oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIERという名前を持つ列がQueryResult<Row>内の行からアクセス可能な列として返される必要があります。

    検索サービスは、DCMI_IDENTIFIER列を抽出し、リンクがクリックされたときにresourceIdパラメータの値としてリソース・ビューアに渡します。

    リソース・ビュー(または任意の宣言済ビュー)で主キーに複数の列が必要な場合は、これらの列をすべて、oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER列のコンポジット文字列値にバンドルします。検索サービスでは、それを不透明に処理してリソース・ビューに渡し、リソース・ビューでその文字列を主キーの各部に分解します。

  • リソース・タイプ

    指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにタイプ列を表示できます。タイプ列にはQNameAttributeConstants.DCMI_TYPEが含まれています。DCMI_TYPE列が見つからない場合は、DCMI_FORMAT列の値がかわりに使用されます。リソース・ビューアでは、リソース・タイプを利用してリソースのレンダリングができます。

  • リソースURL(リソースIDのかわり)

    oracle.webcenter.search.AttributeConstants.DCMI_IDENTIFIER列が存在しない場合は、WebCenter Portalの検索サービスでは、oracle.webcenter.search.AttributeConstants.DCMI_URIによって指定された列の値からリンクを作成します。絶対URLを使用すると、DCMI_URIでは、検索結果からURLへのリンクを起動できます。

    これにより、ドキュメント・ツールやページ・サービスは、リソース・ビューを起動するかわりに、ブラウザ・プラグインを起動して様々な結果リンク・ターゲットをレンダリングできます。

  • 最終変更日

    指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースに最終変更日を表示できます。最終変更日の検索可能属性をミラー化するには、ユーザーが最終変更日を検索結果で返された列として確認できることが重要です。

    ほとんどのユーザーにとって、最終変更日は作成日よりもはるかに意味があります。(ユーザーが、列内のいくつかの値を確認した後で検索に使用する日付を適切に判断できるように)検索可能属性と選択可能属性との間の一貫性を向上させるには、サービス作成者がAttributeConstants.DCMI_CREATEDではなく、AttributeConstants.DCMI_MODIFIEDを返すようにすることを強くお薦めします。最終変更日のタイプは、java.util.Calendarです。

  • 作成者

    指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースに作成者と最終変更者を列で表示できます。検索ユーザー・インタフェースでは、これらは、検出されたリソースのコントリビュータのリストとして同じ列に結合されます。使用するQNameは、それぞれAttributeConstants.DCMI_CREATORAttributeConstants.WPSAPI_MODIFIEDです。作成者のタイプは、java.lang.Stringです。

  • アイコン

    指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにアイコン列を表示できます。アイコン列にはQNameAttributeConstants.WPSAPI_ICON_PATHが指定されており、また、この列はクラス・パスでアクセス可能なアイコン・ファイルへの有効なパスに対応しています。アイコン・パスのタイプは、java.lang.Stringです。

  • サイズ

    指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにサイズ列を表示できます。サイズ列にはQNameAttributeConstants.DCMI_EXTENTが含まれ、また、この列は検出されたリソースのサイズに対応しています。サイズのタイプは、java.lang.Numberです。

44.3.9.4 実行時の処理

メイン・ビューまたはツールバーから検索を行うと、新たな検索ソースがシームレスに統合されます。テスト用に、新たに追加した検索ソースで結果を生成する条件を入力します。

WebCenter Portalの検索サービスは、リソース・アクション処理フレームワークを使用してリソース・ビューアを起動します。リソース・ビューアを登録し、検索によりカスタム・コンポーネントを検出できるようにする方法の詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。

44.3.10 WebCenter Portalの検索サービスAPIを使用しない検索UIのカスタマイズ

WebCenter Portalの検索サービスAPIを使わずFrameworkアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するためにOracle SES Webサービス問合せAPIを使用することで、引き続きOracle SESをアプリケーションの検索エンジンとして使用できます。また、検索結果のアクション処理はWebCenter Portalのリソース・アクション処理フレームワークを使用して管理できるため、検索結果内でアプリケーション・リソース(たとえば、ドキュメント)をクリックすると、リソースのビューア(たとえば、ドキュメント・リソース・ビューア)にリソースが表示されます。さらに、アプリケーションがWebCenter Portalナビゲーションを使用している場合は、特定のリソース・タイプをリソースのナビゲーション・ノードに表示できます。

この項では、検索結果のアクションを処理するための、リソース・アクション処理の有効化に必要な手順について説明します。

  1. WebCenter Portalで提供されているドキュメント・サービス・マネージャを使用して、ドキュメントをクロールします。


    関連項目:

    『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のドキュメント検索のためのOracle SESの設定に関する項


    ドキュメント・サービス・マネージャでは、wc_urlという属性を各ドキュメントのOracle SES索引に作成します。wc_url属性の値は、アプリケーションのリソース・アクション処理モジュールに進むURLです。このURLでは、ドキュメント・サービス・インスタンスのWebCenter URL Prefixパラメータの値を接頭辞として使用します。

    パラメータ値を、たとえばアプリケーションがデプロイされるホストとポートとして、さらにコンテキスト・ルートとして設定します。

    http://myhost:8888/DocumentsServer
    
  2. 検索UIでアクション処理にwc_url属性を使用します。

    通常、検索UIでは、アクション処理にURL属性を使用します。ドキュメント・リソース・タイプの検索結果のアクション処理にリソース・アクション処理を使用するには、wc_url属性を使用します。wc_url属性を持つのは、ドキュメント・リソース・タイプの検索結果のみです。したがって、これは検索UIコードで条件付で実行する必要があります。

  3. WebCenter Portalのリソース・アクション処理クラスを検索結果のクリック・アクション用に指定します。

    検索結果をクリックすると、リソースがそのリソースのリソース・ビューアにレンダリングされます(使用可能な場合)。現在の検索結果ページが上書きされます。リソース・アクション・フレームワークを使用してこの動作を変更します。

    アプリケーションのadf-config.xmlファイルを更新し、使用するリソース・アクション処理クラスを指定します。

    例44-10に、PopUpResourceActionViewHandlerを使用して、検索結果をクリックしたときにポップアップ・ウィンドウにリソースを表示する方法を示します。

    例44-10 ポップアップ動作ハンドラの指定

    xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
      <wpsC:adf-service-config xmlns="http://xmlns.oracle.com/webcenter/framework/service">
        <resource-handler class="oracle.webcenter.framework.resource.view.PopUpResourceActionHandler"/>
      </wpsC:adf-service-config>
    

    例44-11に、NavigationResourceActionHandlerを使用して、検索結果をクリックしたときにリソースのナビゲーション・ノードにリソースを表示する方法を示します。

    例44-11 ナビゲーション・ハンドラの指定

    xmlns:wpsC="http://xmlns.oracle.com/webcenter/framework/service"
      <wpsC:adf-service-config xmlns="http://xmlns.oracle.com/webcenter/framework/service">
        <resource-handler class="oracle.webcenter.portalframework.sitestructure.handler.NavigationResourceActionHandler"/>
      </wpsC:adf-service-config>
    

44.3.11 検索サービスのトラブルシューティング

この項では、検索サービスで発生する代表的な問題と解決方法について説明します。

問題

各サービスの問合せには設定タイムアウトがあります。特定のサービスから割当て時間内に検索結果が返されない場合は、タイムアウトになります。お知らせサービスやディスカッション・サービスはタイムアウトの影響を受けます。(WebCenter Portal: Spacesでは、ページとスペースに、検索実行時からのタイムアウトを設定できます。)

解決方法

設計時にパフォーマンスを改善するために、timeoutMsの値(ミリ秒単位)を増やし、adf-config.xml内でTimeoutMsを準備できます。次は、ADF META-INFフォルダの「アプリケーション・リソース」パネルにあるadf-config.xml関連のフラグメントです。

<execution-properties timeoutMs="3000"prepare TimeoutMs="1000"/>

実行時には、WLSTまたはFusion Middleware Controlを使用してタイムアウトを構成できます。