ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.8.3)
E49666-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

45 検索の統合

この章では、設計時に検索を統合する方法について説明します。

この章の内容は、次のとおりです。

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

45.1 検索の概要

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

WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。

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

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

45.1.1 検索の理解

Oracle SESを使用した検索を実行するには、Oracle SES Administration、Oracle WebCenter Content: Content ServerおよびOracle WebCenter Portalのディスカッション・サーバーで追加の構成が必要です。

Oracle SESリリース11.2.2.2 (WebCenter Portalリリース11.1.1.8に含まれている)の使用を強くお薦めします。


注意:

この章では、Oracle SESリリース11.2.2.2とPortal Frameworkアプリケーションの統合方法について説明します。かわりにOracle SESリリース11.1.2または11.1.2.2を選択する場合は、次を参照してください。

http://docs.oracle.com/cd/E28280_01/webcenter.1111/e10148/jpsdg_search.htm#BABBDFDC


この項の内容は、次のとおりです。

45.1.1.1 WebCenter Portalライブ検索を使用した検索の理解

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

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

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

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

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


注意:

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


ユーザーの検索環境は、構成されているOracle SESのバージョンによって異なります。例:

  • Oracle SES 11.2.2.2で構成されている場合は、「ツールとサービス - 検索」管理ページで検索をカスタマイズできます。Oracle SES 11.2.2.2はファセット検索、検索ボックスでフィルタされた検索およびドキュメントのサムネイルをサポートしていますが、Oracle SESの以前のリリースおよびライブ(委任)検索による実装はサポートしていません。(Oracle SES 11.2.2.2を使用するカスタマイズはすべて、タスク・フロー・パラメータにより表示される場合も、「ツールとサービス - 検索」管理ページで実行されます。)

  • システムがOracle SES 11.1.2.*で構成されている場合、「検索 - 非ファセット検索」タスク・フロー・パラメータを使用して検索をカスタマイズできます。Oracle SES 11.1.2.*は、検索の保存、検索のユーザー・プリファレンスの設定をサポートしていますが、11.2.2.2アダプタおよびライブ(委任)検索による実装はサポートしていません。


注意:

ファセットにより、ユーザーは新規検索を実行せずに索引付きデータにナビゲートできます。検索文字列によっては大量の結果が検出される場合もありますが、検索でファセット・ナビゲーションを使用することで、ユーザーは探しているものを正確に割り出したり、新しい対象を検出することもできます。ファセットにより結果全体が考慮され、以前のリリースで検索の絞込みにかかった応答時間よりも速くなります。


「ツールとサービス - 検索」管理ページでは、どのように検索が構成されているかが表示されます。

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

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

45.1.2 実行時の処理

実行時に、ユーザーはグローバルな(アプリケーション全体の)検索を実行できます。

実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「情報の検索」を参照してください。

45.2 検索の基本構成

この項では、アプリケーションに検索を追加するための手順について説明します。内容は次のとおりです。

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

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


注意:

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


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

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

図45-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 Create facets and sorting attributes 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
「図45-1 Portal Frameworkアプリケーション用のOracle SESの構成」の説明

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

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

管理者

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



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



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



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

  • Oracle SES管理ツール

  • WLST



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

  • Oracle SES管理ツール

  • WLST



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

  • Oracle SES管理ツール

  • WLST



7. ファセットおよびソート属性を作成します


開発者

8. アプリケーションに検索を統合します

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

注意: この手順でsetSESVersion WLSTコマンドを実行し、「ツールとサービス - 検索」管理ページを有効にする必要があります。



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

開発者または管理者

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

  • JDeveloper (開発者)

  • Fusion Middleware Control (管理者)

  • WLST (管理者)

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


管理者

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


管理者

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

  • Fusion Middleware Control

  • WLST

  • WLS管理コンソール



45.2.2 Oracle SESの接続の設定

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

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

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

    「アプリケーション・リソース」または「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サーバーの両方に存在するユーザーの名前を入力します。

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

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

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

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

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

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

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

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

    これで、Oracle SES接続がconnections.xmlファイルに追加され、例45-1に示すように、adf-config.xmlファイルのデフォルト接続になります。

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

    <ses-properties>
      <connection>SESconnection</connection>
      <data-group>MySources</data-group>
    </ses-properties>
    
  3. setSESVersion WLSTコマンドを実行し、デフォルト接続に関連付けられたOracle SESインスタンスのバージョン情報を取得し、保存する必要があります。これにより、「ツールとサービス - 検索」管理ページが有効化されます。このページは、Oracle SES 11.2.2.2を使用して検索の設定をカスタマイズするために必要です。

    使用しているOracle SESのバージョンが正しく設定されていることを確認するには、listSESVersion WLSTコマンドを実行します。

    コマンドの構文および例は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のsetSESVersionおよびlistSESVersionに関する項を参照してください。


注意:

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


45.2.3 検索の設計時の追加

この項では、検索タスク・フローについて説明するとともに、検索をアプリケーションに統合する方法についても説明します。内容は次のとおりです。

45.2.3.1 検索タスク・フロー

表45-2に、Oracle SES 11.2.2.2に含まれる検索タスク・フローを示します。

表45-2 検索タスク・フロー

タスク・フロー 定義

検索 - ファセット検索

このタスク・フローでは、ファセット検索、検索ボックスのフィルタ検索およびドキュメント・サムネイルがサポートされており、豊富な検索操作を提供します。

注意: この検索タスク・フローは、Oracle SES 11.2.2.2が構成されている環境で提供されます。

検索 - 管理

このタスク・フローにより、検索の設定をカスタマイズする「ツールとサービス - 検索」管理ページにアクセスできます。

検索 - ツールバー

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



注意:

表示されているその他の検索タスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。


45.2.3.2 検索をページに追加する方法

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

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


    注意:

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


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

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

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

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

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

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

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

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

  7. 「検索 - ファセット検索」タスク・フローには、(検索の設定をカスタマイズするための)「検索」管理ページにアクセスするために「検索 - 管理」タスク・フローが必要です。「検索 - ツールバー」タスク・フローを追加した方法と同様に、このタスク・フローを追加します。


注意:

「リソース・パレット」には「検索 - 保存済検索」タスク・フローおよび「検索 - プリファレンス」タスク・フローも表示されます。これらのタスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。

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


45.2.3.3 検索をカスタマイズする方法

Oracle SESを使用して構成されていた以前のリリースでは、アプリケーション・スペシャリストは、検索(「検索 - 非ファセット検索」)タスク・フロー・パラメータを使用して検索をカスタマイズできました(つまり、検索結果のレイアウトおよび検索動作を変更できました)。これらのパラメータを使用すると、特定のポータル、ツール/サービスおよびドキュメントのタイプに検索のスコープを絞り込むことができました。さらに、検索結果の項目ごとに返される標準属性のリストにカスタム属性を追加したり、ユーザーが検索結果に使用可能な標準の絞込み機能を非表示にすることもできました。

WebCenter Portalリリース11.1.1.8およびOracle SES 11.2.2.2を使用すると、タスク・フロー・パラメータを使用するかわりに、検索はすべて「ツールとサービス - 検索」管理ページでカスタマイズされます。これはより簡単に検索を構成する方法です。この新しい検索操作はファセット検索を利用します。この新しい「検索 - ファセット検索」タスク・フローは、Oracle SES 11.2.2.2が構成されている場合にのみ使用されます。

45.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で保護されたアプリケーションの認証済ユーザーのみが検索を保存できます。


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

45.3 検索の詳細情報

この項では、検索で使用可能なオプション機能について説明します。内容は次のとおりです。


注意:

検索REST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenter Portalのライブ(フェデレーテッド)検索を使用した検索ではサポートされていません。


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

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

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

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

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

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

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

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

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

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

    図45-5 グローバル検索結果

    図45-5の説明が続きます
    「図45-5 グローバル検索結果」の説明


関連項目:

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


45.3.2 WebCenter Portalのライブ検索を使用する検索の構成

Oracle SESで手動で検索をオーバーライドしたり、WebCenter Portalのライブ(委任)検索を使用してアプリケーション検索を実行したりできます。

WebCenter Portalのライブ検索を使用する検索を有効化するには、adf-config.xmlファイルを編集してcrawl-propertiesのすべての有効な属性をFALSEに変更する(例45-2)か、crawl-propertiesをすべてコメント・アウトします(例45-3)。

例45-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> 

例45-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> 

45.3.3 検索Java APIの使用

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

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

45.3.4 検索REST APIの使用

WebCenter Portalは、カスタマイズされた検索ユーザー・インタフェースを作成できるようにするREST APIを提供しています。Oracle SES 11.2.2.2では、検索REST APIを使用して検索およびファセットを読取り(GET)できます。ファセットは検索結果とともに返され、結果のフィルタ処理に使用できます。検索のキーワードと範囲を指定できます。たとえば、文字列「webcenter」の検索で何千もの結果が生成されたとします。URLでファセット(作成者または最終変更日付など)を使用し、author=Karenおよびlast-modified-date=this weekのように、特定のファセット値に対する結果を取得できます。

この項の内容は、次のとおりです。

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

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

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

urn:oracle:webcenter:searchcollection

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


関連項目:

リソース索引には次の2つの検索のエントリがあります。

  • urn:oracle:webcenter:searchcollection (これには、Oracle SES 11.2.2.2で構成されたWebCenter Portalが必要です。)

  • urn:oracle:webcenter:searchresults (これには、サポートされている任意のバージョンのOracle SESで構成されたWebCenter Portalが必要です。)

この章では、urn:oracle:webcenter:searchcollectionについてのみ説明します。urn:oracle:webcenter:searchresultsの詳細は、次を参照してください。

http://docs.oracle.com/cd/E28280_01/webcenter.1111/e10148/jpsdg_search.htm


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

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

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

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

検索の分類は次のとおりです。

urn:oracle:webcenter:searchcollection
   urn:oracle:webcenter:searchcollection:results

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

検索リソース内のコレクション・リソースは、ページ区切り(startIndexおよびitemsPerPage)をサポートします。エントリ・ポイントはsearchcollection要素にすべての結果を返します。dataType引数の適切な値を指定して、様々なコンポーネントを問い合せます。

searchTermsdataおよびdataTypeでサポートされ、ここでdataTypeには、次の値のうち1つ以上が設定されます。

  • resultCount: 問合せを満たす結果の数

  • results: 実際の結果

  • facetCount: 問合せ結果に対するファセットの数

  • facets: 現在の結果に対するファセット

カンマで値を区切り、複数のdataTypeを指定します。例:

http://host:port//rest/api/searchcollection?&dataType=results,facets
&facetParams=author:weblogic&utoken=FDX7xKPzzrnsbWRHNP-b-iUoWiJ4_w\*\\\\\\\\*

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

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

resourceindex
   searchcollection
resourceindex
   spaces
      spaces:resourceindex
         spaces:searchcollection

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

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

  • GET

    • リクエスト - 本体: なし、パラメータ: qdataTypestartIndex (ページ区切り)、itemsPerPage (ページ区切り)、datafacetParams

    • レスポンス - 本体: 検索結果およびオプションでファセット

ここで:

  • q={queryString}

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

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

    ここでは、複数の句が暗黙のANDによって結合され、セミコロン(;)によって構文的に区切られます。大かっこ[]は、オプションの値を示します。どの句もコロン(:)のセパレータを使用しない単純な文字列のキーワードにできます。

    問合せ文字列は問合せキーワード以外はサポートしません。

  • dataTypeは結果のタイプです

    たとえば、結果のみが必要な場合はdataType=results (または空のまま)とします。結果にファセットを含めるには、dataType=results,facetsとします。

  • dataはカスタム属性のパラメータです

    例:

    data=numberofreplies,wc_tagsWords
    
  • facetParamsはファセット絞込みのパラメータです

    デフォルト・セットは、「サービスID」、スコープGUID、「タグ」、「作成者」、「最終更新日」、「MIMEタイプ」です。

    たとえば、人で絞り込むには、oracle.webcenter.peopleにのみファセット「サービスID」を次のように設定します。

    facetParams=Service%20ID:oracle.webcenter.people
    

注意:

facetParamsパラメータを使用する場合は、dataTypeパラメータにfacetsを含める必要があります。


例45-4 検索RESTコマンド

http://examplehost:8888/rest/api/searchcollection?q=document&utoken={utoken}

http://examplehost:8888/rest/api/searchcollection?q={keyword}
&data=dDocName,dOriginalName&dataType=results,facets
&facetParams=Service%20ID:oracle.webcenter.people

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


関連項目:

Oracle SES問合せ構文の詳細は、次を参照してください。

http://docs.oracle.com/cd/E21698_01/admin.1122/e21605/search001.htm#BABFDAGD


resultsの書込み可能要素

表45-3に、このリソースの書込み可能な要素を示します。

表45-3 resultsの書込み可能要素

要素 タイプ 説明

author

String

resultに書き込んだ任意のユーザー

resourceId

String

一意識別子

serviceId

String

resultのサービスID、oracle.webcenter.doclibなど

title

String

resultのタイトル

description

String

resultの説明

modified

日付

最終更新日

size

数値

resultのサイズ

docid

String

ドキュメント識別子

created

日付

resultの最初の作成者

icon

String

resultタイプのアイコン

url

String

resultのURL

mimetype

String

resultのMIMEタイプ

guid

String

resultのGUID値

scope

String

ポータルのGUID値

scopename

String

ポータル名

resourceType

String

resultのタイプ

language

String

resultの言語

snippet

String

resultのスニペット

modifier

String

resultの更新者

customattributes

任意

データで指定される任意のカスタム属性のリスト


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

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

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

rel リソース・タイプ

self



45.3.4.3 セキュリティに関する考慮事項

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

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

45.3.4.4 検索リソース・タイプ

この項では、各リソース・タイプについて説明します。内容は次のとおりです。

45.3.4.4.1 urn:oracle:webcenter:searchcollection:links

テンプレート・リンクおよびページ区切りリンクにはこのリソース・タイプを使用します。

45.3.4.4.2 urn:oracle:webcenter:searchcollection:results

このリソース・タイプを使用して、キーワードとファセットを含む問合せの読取り(GET)に使用するURIを識別します。

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

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

45.3.4.4.3 urn:oracle:webcenter:searchcollection:facets

このリソース・タイプを使用して、ファセットを含む問合せの読取り(GET)に使用するURIを識別します。ファセットは問合せ結果とともに返され、結果のフィルタに使用できます。これらのファセットをURLで使用し、author=weblogicおよびlast-modified-date=this weekのように特定のファセット値の結果を取得できます。

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

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

45.3.5 検索データ・コントロールの使用

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

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

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

表45-5 searchSes入力パラメータ

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

scopeGuid

いいえ

String

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

serviceId

いいえ

String

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

keywords

はい

String

検索文字列。

predicates

いいえ

リスト

条件のコレクション。

fetchRefiners

いいえ

Boolean

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

startIndex

はい

整数

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

itemsPerPage

はい

整数

表示する結果数。


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

45.3.5.1.1 SearchServiceDCRows
  • author

  • comments

  • createDate

  • description

  • iconPath

  • language

  • largeIconPath

  • lastModifiedDate

  • resourceId

  • scopeGuid

  • serviceId

  • size

  • tagWords

  • title

  • type

  • urlSearchServiceDCRefiner

45.3.5.1.2 SearchServiceDCRefiner

element

45.3.5.1.3 SearchServiceDCRefinement
  • keywords

  • scopeGuid

  • serviceId

  • 条件のコレクション

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

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

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

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

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

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

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

    • keywords: 任意の検索文字列

    • startIndex: 0

    • itemsPerPage: 10

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

45.3.6 検索のアダプタの構築

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

この項では、検索アダプタを使用して、WebCenter Portalの検索を拡張する方法について説明します。内容は次のとおりです。

45.3.6.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 ...


注意:

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


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

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

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

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

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

      図45-6 WebCenter共通ライブラリ

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

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

  3. SampleQueryManager.javaという名前のクラスを作成します(例45-5)。

    例45-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という名前のクラスを作成します(例45-6)。

    例45-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_AUTHOR;
    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という名前のクラスを作成します(例45-7)。

    例45-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という名前のクラスを作成します(例45-8)。

    例45-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_AUTHOR;
    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 author, 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_AUTHOR, author);
        // 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();
      }
    }
    

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

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

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

例45-9 service-definition.xmlでの問合せマネージャ用サンプル・エントリ

<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のリソース・アクション処理フレームワーク)の詳細は、第4.3項「Customizing How Services Render Resources」を参照してください。

45.3.6.3 検索アダプタの属性

この項では検索に使用可能な属性について説明します。内容は次のとおりです。

45.3.6.3.1 検索可能な属性

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

45.3.6.3.2 キーワード

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

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

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

45.3.6.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タイプである必要があります。

45.3.6.3.4 複雑な日付の条件

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

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

45.3.6.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タイプである必要があります。

45.3.6.3.6 複雑なユーザー条件

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

45.3.6.3.7 アクセス

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

45.3.6.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_AUTHORAttributeConstants.WPSAPI_MODIFIEDです。作成者のタイプはjava.lang.Stringです。

  • アイコン

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

  • サイズ

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

45.3.6.4 実行時の処理

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

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

45.3.7 WebCenter Portalの検索APIを使用しない検索UIのカスタマイズ

WebCenter Portalの検索APIを使用せずアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するために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ファイルを更新し、使用するリソース・アクション処理クラスを指定します。

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

    例45-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>
    

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

    例45-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>
    

45.3.8 検索のトラブルシューティング

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

問題

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

解決方法

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

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

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