Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド 11g リリース1 (11.1.1.7.0) B72084-02 |
|
前 |
次 |
この章では、設計時にWebCenter Portal: Frameworkアプリケーションに検索サービスを統合する方法について説明します。
検索の管理および組込みの詳細は、次を参照してください。
『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』のWebCenter PortalのOracle SES検索の管理に関する項
『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』の検索サービスの使用に関する項
この章には次の項が含まれます:
WebCenter Portalは、直観的なユーザー・インタフェースを介して情報を検出できる統一された拡張可能なフレームワークを提供しています。このフレームワークでは、ユーザーが表示権限を持つ結果のみを返すことにより、アプリケーションのセキュリティ設定を順守します。WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。
Oracle Secure Enterprise Search (SES)アダプタ
Oracle WebCenter Portalライブ検索アダプタ
Frameworkアプリケーションの場合、 Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。WebCenterのライブ検索アダプタより高度なスケーラビリティとパフォーマンスを提供する以外にも、Oracle SESは次の理由で有益です。
Oracle SES検索では、統合ランキング結果を提供します。その場合、最も関連性の高い項目が最初に表示されます。
Oracle SESは、より徹底した検索を提供します。たとえば、リストを検索する場合、WebCenter Portalライブ検索はリスト名と説明のみを検索しますが、Oracle SESはリストの列名と列のコンテンツも検索します。
Oracle SES検索では、WebCenter Portal外のリポジトリの検索が可能です。Oracle SES検索の結果は、WebCenter Portalの検索結果と同じ結果セットに表示されます。
Oracle SES検索では、検索インタフェースをカスタマイズするための検索サービスREST APIとデータ・コントロールがサポートされています。
Oracle SESまたはライブ検索アダプタ機能に加え、ドキュメント・ツールはファイル検索用の独自の検索エンジンを提供しています。これにより、ファイルの検索範囲を絞り込むことができるため、時間が節約される上、検索結果の妥当性が向上します。
Oracle SESは、次のリソースについての統合ランキング結果を提供します。
ドキュメント(Wikiやブログを含む)
お知らせおよびディスカッション
WebCenter Portal: Spacesのスペース、リスト、ページ・コンテンツおよびピープルの各リソース
注意: WebCenter Portal: Spacesアプリケーションには、Spacesのスペース、リスト、ページおよびピープルの各リソースを索引付けするOracle SESクローラが組み込まれています。このクローラはFrameworkアプリケーションではサポートされていません。 |
サポート対象の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のディスカッション・サーバーで追加の構成が必要です。
Oracle SESは最高のパフォーマンスを実現するための優先検索プラットフォームですが、Oracle SESを使用した検索を手動でオーバーライドして、Frameworkアプリケーション検索でWebCenter Portalのオリジナル検索アダプタを使用することもできます。WebCenter Portalの検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのサービスが対象になります。
Frameworkアプリケーションでリソース・アクション処理が指定されていない場合は、検索結果をクリックすると、デフォルトのアクションにより、新しいブラウザ・ウィンドウに検索結果がレンダリングされます。また、ドキュメント、ディスカッションまたはお知らせなどの、リソース・ビューアを提供するサービスからの結果が、リソース・ビューアに表示されます。リソース・ビューアとリソース・アクション処理フレームワークの詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。
実行時に、ユーザーは検索タスク・フローまたは検索ツールバーからグローバルな(アプリケーション全体の)検索を実行し、検索を調整および保存できます。
実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』を参照してください。
この項では、アプリケーションに検索サービスを追加するための手順について説明します。次のサブセクションが含まれます:
構成プロセス全体のガイドとしてこの項のロードマップを使用してください。
注意: Oracle SESを使用した検索をオーバーライドして、オリジナルのWebCenter Portalライブ検索アダプタを使用する場合は、Oracle SESの構成は不要です。スキップして第44.2.3項「検索サービスの設計時の追加」に進みます。 |
図44-1と表44-1は、Frameworkアプリケーション内でOracle SESを動作させるために必要な前提条件とタスクの概要を示しています。
表44-1 Frameworkアプリケーション用のOracle SESの構成
アクター | タスク | サブタスク |
---|---|---|
管理者 |
1. WebCenter PortalおよびOracle SESをインストールします |
|
2. アイデンティティ管理システムを使用してOracle SESを構成します |
||
3. Oracle SESでドキュメント・サービス・マネージャを設定します |
||
4. 次のいずれかのツールを使用して、フェデレーション・トラステッド・エンティティを作成します
|
||
5. 次のいずれかのツールを使用して、2つのクロール・ソース、ドキュメント・クローラとディスカッション・クローラを作成します
|
||
6. 次のいずれかのツールを使用して、クロール・ソースのソース・グループを作成します
|
||
開発者 |
7. アプリケーションに検索サービスを統合します |
7.a JDeveloperでOracle SESへの接続を構成します |
7.b JDeveloperでページに検索サービス・タスク・フローを追加します |
||
開発者または管理者 |
8. 次のいずれかのツールを使用してアプリケーションをデプロイします
|
|
管理者 |
9.(オプション)SSLを使用してOracle SESへの接続を保護します |
|
管理者 |
10. 次のいずれかのツールを使用して、追加検索パラメータを構成します
|
Oracle SESを使用して検索を実行するには、アプリケーションにOracle SES接続を追加する必要があります。詳細は、第44.3.4項「Oracle SESアダプタを使用する検索の構成」を参照してください。
注意: WebCenter Portal外のリポジトリを検索するためにOracle SESへの接続を作成し、Fusion Middleware ControlやWLSTでデフォルトの検索クローラとしてのOracle SESの使用をオーバーライドできます。これにより、ユーザーは、ピープルなどの他のFrameworkアプリケーション・リソースを検索できます。 |
第44.2.3項「検索サービスの設計時の追加」に従って、検索ツールバーをページに追加します。
Oracle SESへの接続を設定します。アプリケーション・ナビゲータで、「アプリケーション・リソース」を開きます。「接続」ノードを右クリックして「接続の作成」を選択し、「Oracle Secure Enterprise Search」を選択します。
「アプリケーション・リソース」または「IDE接続」のいずれかで接続を作成します。「アプリケーション・リソース」の接続はそのアプリケーションでのみ使用可能ですが、「IDE接続」の接続は作成したすべてのアプリケーションで使用可能です。別のアプリケーションで接続を使用する場合は、「IDE接続」を選択して、接続を再作成する必要がないようにします。
注意: IDEで接続を作成した場合は、後でこの接続をアプリケーションに追加する必要があります。たとえば、「リソース・パレット」の「IDE接続」の下にある接続を右クリックし、「アプリケーションに追加」を選択します。 |
ダイアログのフィールドに値を入力します。例:
「接続名」にSESconnection
などの意味を表す名前を入力します。作成後にこの名前を変更することはできません。(別の接続名を使用するには、新たに接続を作成します。)
「SOAP URL」に、次のようなOracle SES WebサービスのエンドポイントのURLを入力します。
http://host:port/search/query/OracleSearch
「フェデレーション・トラステッド・エンティティ」の「エンティティ名」に、Oracle SESインスタンス上でこのアプリケーション用に定義されているトラステッド・エンティティ(wcsearchなど
)を入力します。
トラステッド・エンティティにより、アプリケーションではOracle SESに対してそれ自体を認証し、Oracle SES上で問合せを作成する際にユーザーをアサートできるようになります。このトラステッド・エンティティは、Oracle SES内部のアイデンティティ管理サーバー上に存在する、またはOracle SES内部で作成された任意のユーザーに設定できます。トラステッド・エンティティは、Oracle SESの「グローバル設定」 - 「フェデレーション・トラステッド・エンティティ」ページで検出(または作成)できます。
「エンティティ・パスワード」に、フェデレーション・トラステッド・エンティティ・ユーザーのパスワードを入力します。
「アプリケーション構成」で、「検索サービスのデフォルト接続として設定」チェック・ボックスを選択します。
これにより、アプリケーションでその接続を使用してOracle SESにアクセスできるようになります。検索サービスでは、Oracle SES接続を1つのみ使用します。
注意: 接続をデフォルトの接続として作成すると、それがデフォルトでないように編集することはできません。別のデフォルト接続を使用するには、新しい接続を作成し、それをデフォルト接続としてマークする必要があります。 |
「ソース・グループ」に、検索対象のOracle SESソース・グループを入力します。値を指定しないと、Oracle SESインスタンスのすべてのクロール・ソースが検索されます。
注意: ソース・グループには、Oracle SES上の検索可能なデータをセグメント化するよい方法があります。すべての企業データの検索インデックスを保持するOracle SESインスタンスの場合は、ソース・グループを使用して、WebCenter Portalの検索に使用可能な企業データの一部のみを作成できます。ソース・グループの作成の詳細は、Oracle SES管理者ガイドを参照してください。 |
「テスト中」の「ユーザー名」に、使用しているアプリケーション用に構成されたOracle Identity ManagementサーバーとOracle SES用に構成されたOracle Identity Managementサーバーの両方に存在するユーザーの名前を入力します。
図44-2のように表示されます。
「接続のテスト」をクリックして、ステータスを確認します。
接続が正常な場合は、「OK」をクリックします。
アプリケーションにOracle SES接続を含めると、「アプリケーション・リソース」パネルでの表示は図44-3のようになります。
例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に、検索サービス・タスク・フローを示します。
検索ツールバー・タスク・フローでは、検索サービスをアプリケーションに追加するための最も簡単な方法を提供します。検索ツールバー・タスク・フローをFrameworkアプリケーションに追加するには:
第3章「開発環境の準備」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。
注意: WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第68.3項「ADFセキュリティの構成」を参照してください。 |
検索サービスを追加するページを開きます。
リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。
「検索ツールバー」タスク・フローをページにドラッグ・アンド・ドロップします。
要求されたら、タスク・フローの作成方法として「リージョン」を選択します。
ADFライブラリの確認を求めるプロンプトが表示された場合は、「ライブラリの追加」をクリックします。
検索ツールバーが表示されたページを実行します。
アプリケーション・ナビゲータでこのアプリケーションを右クリックし、「実行」を選択します。操作の完了に時間がかかる場合があります。
セキュリティの定義時に作成したユーザー名と資格証明を入力します。
注意: 検索サービスで結果を返すには、その他のWebCenter Portalサービスがアプリケーションに組み込まれていることが必要です。 |
検索サービス・タスク・フロー・パラメータを使用すると、タスク・フロー・インスタンスの外観と動作をカスタマイズできます。たとえば、特定のサービス、ドキュメントのタイプおよびスペースのみを含めるように検索結果を制限したり、検索ボックスのサイズを変更できます。
関連項目: タスク・フロー・パラメータを使用して検索サービスをカスタマイズする方法の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portal: Spacesユーザーズ・ガイド』のパラメータを設定して検索を絞り込む方法に関する項を参照してください |
ページにタスク・フローを配置した後、タスク・フロー・バインディング・パラメータの値を確認して調整するには:
タスク・フローを含むページの下部にある「バインディング」タブ(「ソース」タブの隣)をクリックし、「タスク・フロー・バインディングの編集」ダイアログに移動します。
「実行可能ファイル」の下に、追加したタスク・フローが表示されます。図44-4に、「実行可能ファイル」セクションの検索タスク・フローの例を示します。
タスク・フローを選択し、「実行可能ファイル」という見出しの横にある、「選択した要素を編集します。」(鉛筆)アイコンをクリックします。
「タスク・フロー・バインディングの編集」ダイアログ(図44-5)で、フィールドをダブルクリックし、既存の値を変更するか新しい値を追加して、バインディング・パラメータ値を改訂します。
終了したら、「OK」をクリックします。
ページを保存して実行し、結果を表示します。
表44-3に、検索サービス・タスク・フロー固有のプロパティを示します。
表44-3 検索サービス・タスク・フローのパラメータ
プロパティ | 説明 | タスク・フロー |
---|---|---|
検索結果を表示する際に表示するカスタム属性のリスト。 検索結果に1つ以上のカスタム属性を組み込むには、これを、カスタム属性名のカンマ区切りリストに設定します。オプションのラベル接頭辞には、関連付けられているカスタム属性名ではなく、表示するカスタム属性名を指定することもできます。label:nameの形式を使用します。 |
検索 検索ツールバー |
|
検索結果を表示する際に非表示にする絞込み条件のリスト。 1つ以上の絞込み条件を非表示にするには、これを、絞込み条件名のカンマ区切りリストに設定します(作成者、日付、スペース、コンテンツおよびタグから選択)。 |
検索 検索ツールバー |
|
入力ボックスを表示または非表示にします。 入力ボックスを表示するにはtrue(デフォルト)に、非表示にするにはfalseに設定します。 |
検索 |
|
検索を制限するMIMEタイプのリスト。 検索を特定のドキュメント・タイプに制限するには、これを、ドキュメントのMIMEタイプ(PDF、PPT、DOC)のカンマ区切りリストに設定します。 これは、ドキュメント・ツールにoracle.webcenter.doclibも設定できます。 注意: 検索をMicrosoft WordドキュメントとWebCenter Portalページに制限するには、このパラメータをapplication/mswordに設定し、 関連項目: 『Oracle Fusion Middleware Oracle WebCenter Portal管理者ガイド』の特定のドキュメント・タイプの検索に関する項を参照してください。 |
検索 検索ツールバー |
|
検索範囲を制限する一意のIDのリスト。検索をスペースのリストに制限するには、これを、スペースのGUIDのカンマ区切りリストに設定します。 例: |
検索 検索ツールバー |
|
検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのGUIDに設定します。 例: #{spaceContext.currentSpaceGUID}またはs8bba98ff_4cbb_40b8_beee_296c916a23ed 注意: このパラメータは非推奨です。これは、後方互換性のためにのみ組み込まれています。 |
検索 |
|
検索ボックスのサイズを制限する値。 デフォルト値は42です。検索ボックスの長さを短くするには、より小さな値(30など)を入力します。これにより、検索タスク・フローの検索ボックスのサイズも変更されます。 |
検索ツールバー |
|
検索結果を表示する際に組み込むサービスやエグゼキュータのIDのリスト。 コンテンツ・サーバーのピープル・プロファイルとドキュメントのみを表示するには、このパラメータを サービスIDのリストは、表F-7「サービスID」を参照してください。 |
検索 検索ツールバー |
|
検索キーワードまたは保存済検索GUIDを入力します。 注意: このパラメータは社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、この値は変更しないでください。この値を変更する場合は、 |
検索 |
|
注意: 自動的に設定されるこの値は、社内使用専用です。検索メイン・ビューをコード化する必要がないかぎり、これは変更しないでください。 |
検索 |
|
検索範囲を制限する一意のID。検索を特定のスペースに制限するには、これをスペースのスコープ・オブジェクト、たとえば、 注意: このパラメータは非推奨です。かわりに、 |
検索ツールバー |
注意: すべての保存済検索タスク・フローと検索プリファレンス・タスク・フローには、一意のプロパティはありません。 |
ユーザーを検証および認証するために、アイデンティティ管理システムを使用して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セキュリティの構成」を参照してください。
この項では、このサービスで使用可能なオプション機能について説明します。次のサブセクションが含まれます:
注意: 検索サービスREST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenterのオリジナルの検索アダプタを使用した検索ではサポートされていません。 |
検索タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索タスク・フローをページにドラッグ・アンド・ドロップします。
検索ビューを含むページを実行するには:
アプリケーション・ナビゲータでページを右クリックし、「実行」を選択します。アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。
ADFセキュリティを構成した場合は、ユーザー名とパスワードを入力し、「発行」をクリックします。ます。
フィールドに検索条件を入力し、「検索」アイコンをクリックします。アプリケーションに検索サービス自体のデータ以外があまり移入されていない場合は、結果はほとんど表示されません。
検索 - 保存済検索タスク・フローを追加して、アプリケーション内で保存済検索を実行するための簡単な起動パッドを提供できます。このタスク・フローをFrameworkアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、検索 - 保存済検索タスク・フローをページにドラッグ・アンド・ドロップします。
このタスク・フローは、クリックされると保存済検索を実行するリンクをレンダリングします。
検索プリファレンス・タスク・フローを使用すると、ユーザーはどのWebCenter Portalサービスを検索するのかを制御できます。デフォルトでは、すべての有効なサービスが検索対象として選択されます。ユーザーは、検索結果を表示しないサービスを無効化できます。また、検索結果に表示するサービスの順序を選択することもできます。たとえば、ドキュメント・ツールの検索結果が他のサービスの検索結果より遥かに有用だと気付く場合があります。
検索プリファレンス・タスク・フローをアプリケーションに追加するには、第44.2.3項「検索サービスの設計時の追加」の検索ツールバー・タスク・フローの手順に従うか、または検索プリファレンス・タスク・フローをページにドラッグ・アンド・ドロップします。
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の結果が含まれていることを検証します。
アプリケーション・ナビゲータで、検索ツールバーを使用して作成したページを右クリックし、「実行」をクリックします。
アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。
セキュリティの定義時に作成したユーザー名と資格証明を入力します。
「送信」をクリックします。
ページがロードされると、検索ツールバーが表示されます。
図44-6に、Oracle SESがクロールする前の、検索文字列webcenterのサンプルの結果ページを示します。
図44-7に、Oracle SESが構成されてクロールした後の、サンプルの結果ページを示します。
関連項目: Oracle Fusion Middlewareドキュメント・ライブラリのOracle SESのドキュメント(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>
カスタム・コンポーネントでは、検索サービスAPIを実装してそのコンテンツをWebCenter Portalの検索に公開できます。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。
WebCenter Portalは、検索サービスをサポートするためのREST APIを提供しています。検索サービスREST APIを使用して検索を読取り(取得)します。検索のキーワードと範囲を指定できます。たとえば、iPhoneではすべてのスペース、ドキュメントおよびWikiページ内の「smith」を検索できます。また、APIによって、検索サービスの上にカスタマイズされた検索ユーザー・インタフェースを作成できます。
この項では、検索サービスに関連したREST APIについて説明します。次のサブセクションが含まれます:
REST APIの概要は、第53章「Oracle WebCenter Portal REST APIの使用」を参照してください。
各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。検索サービスのエントリ・ポイントを検索するには、次のresourceType
を持つリンク要素を検索します。
urn:oracle:webcenter:search
対応するhref
またはtemplate
要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、検索サービスを操作します。
リソース索引の詳細は、第53.5.1項「リソース索引」を参照してください。
リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。
クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。
検索サービスの分類は次のとおりです。
urn:oracle:webcenter:search urn:oracle:webcenter:search:results
サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。
検索リソース内のコレクション・リソースは、ページ区切り(startIndex
およびitemsPerPage
)をサポートします。その他の問合せパラメータ(search
とprojection
)はサポートされていません。
認証は、検索REST APIのメソッドを使用する前に必要です。
一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。
この項では、各リソース・タイプについて説明します。次のサブセクションが含まれます:
このリソース・タイプを使用して、キーワードと属性固有の条件を含む問合せの読取り(GET
)に使用するURIを識別します。
リクエストはURLによって表され、レスポンスは検索結果のリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。
レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。
resultsへのナビゲーション・パス
この項では、クライアントがハイパーメディアを経由してこのリソースにアクセスする方法を示します:
resourceindex search
resourceindex spaces spaces:resourceindex spaces:search
resultsでサポートされるメソッド
次のメソッドは、このリソースによりサポートされています:
GET
リクエスト - ボディ: なし、パラメータ: serviceId
、q
、scopeGuid
、refiners
、startIndex
(ページ区切り)、itemsPerPage
(ページ区切り)
レスポンス - ボディ: 検索結果および絞込み条件(refiners=true
の場合)
ここで:
serviceId={serviceId1}[,{serviceId2}...]
オプション: これにより、検索が、oracle.webcenter.doclibやoracle.webcenter.pageなどの1つ以上のWebCenter Portalサービスに絞り込まれます。たとえば、これをoracle.webcenter.doclibに設定すると、ドキュメントのみが検索されます。省略すると、この検索はすべてのサービスについて実行されます。
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の書込み可能要素
要素 | タイプ | 必須 | 制約 | 説明 |
---|---|---|---|---|
|
String |
1文字以上の文字 |
問合せ作成者の名前 |
|
|
||||
|
||||
|
||||
|
String |
いいえ |
1文字以上の文字 |
問合せの説明 |
|
||||
|
resultsからリンクされるリソース・タイプ
表44-5に、クライアントがこのリソースにリンクできるリソース・タイプを示します。
検索サービス・データ・コントロールを使用して、Frameworkアプリケーションまたはカスタム・タスク・フローで動作するカスタマイズされた検索ユーザー・インタフェースを作成できます。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、それをWebCenter Portal: Spacesアプリケーションのリソース・カタログに追加して、サイト・テンプレートを作成できます。
検索データ・コントロールにはsearchSes
メソッドが含まれています。表44-6では、検索絞込み条件を設定し、検索の有効範囲を制限するためのパラメータについて説明します。
表44-6 searchSes入力パラメータ
パラメータ | 必須かどうか | タイプ | 説明 |
---|---|---|---|
|
いいえ |
String |
結果をスペースでフィルタするためのGUID値。 |
|
いいえ |
String |
アイテムのサービスID。たとえばoracle.webcenter.doclibはドキュメントのみを検索します。省略すると、すべてのサービスを対象に検索します。 |
|
はい |
String |
検索文字列。 |
|
いいえ |
リスト |
条件のコレクション。 |
|
いいえ |
Boolean |
絞込み条件をフェッチするかどうか。省略した場合、デフォルト値はfalseです。 |
|
はい |
整数 |
結果セットに含める、最初に一致する結果のインデックスを指定します(0-n ... 0から始まる)。これはページ区切りに使用されます。 |
|
はい |
整数 |
表示する結果数。 |
searchSes
メソッドは次のコレクションを返します。
SearchServiceDCRowsオブジェクトのコレクション
SearchServiceDCRefinerオブジェクトのコレクション
author
comments
createDate
description
iconPath
language
largeIconPath
lastModifiedDate
resourceId
scopeGuid
serviceId
size
tagWords
title
type
urlSearchServiceDCRefiner
element
keywords
scopeGuid
serviceId
条件のコレクション
検索データ・コントロールを使用するには:
JDeveloperで、Oracle SES接続を備えたFrameworkアプリケーションを作成します。接続が使用可能になると、「データ・コントロール」パレットに検索データ・コントロールが表示されます。
SearchServiceDC
からsearchSes
メソッドをドラッグ・アンド・ドロップします。
「ADFパラメータ・フォーム」を選択し、「フォーム・フィールドの編集」ダイアログを開きます。「OK」をクリックします。
SearchServiceDCResult
戻りオブジェクト・タイプからフォーム上に行アクセッサをドラッグし、「表」 - 「ADF読取り専用表」を選択します。「OK」をクリックします。
ページを実行し、適切な値を入力します。例:
keywords
: 任意の検索文字列
startIndex
: 0
itemsPerPage
: 10
アプリケーションへのデータ・コントロールの追加の詳細は、第7.1.2項「WebCenter PortalのAPIの理解」を参照してください。
検索アダプタを使用してその他のソースを検索結果に追加できます。これらの検索アダプタは、WebCenter Portalフレームワークによって自動的に検出され、アプリケーションで検索結果を生成する際に統合されます。その後、アプリケーションでカスタム・コンポーネントを検索サービスに公開すると、このコンポーネントはフェデレーテッド検索に組み込まれます。
この項では、検索アダプタを使用して、WebCenter Portalの検索を拡張する方法について説明します。次のサブセクションが含まれます:
検索ソースを新たに追加するには、入力される問合せを管理し、検索結果を返す新規ソース用のJavaクラスを作成する必要があります。必要なJavaクラスのアプリケーションへの追加後、これを検索サービスに登録する必要があります。
検索を行うと、問合せオブジェクトと検索対象の列を示すList<QName>
とともにQueryManager.createRowQueryHandler
が、検索フレームワークでコールされます。フレームワークで、戻り値としてQueryHandler<Row>
を受け取ります。
QueryHandler
は、QueryFederator
またはQueryExecutor
の場合もあります。QueryFederator
は、単に他のQueryHandlers
のコレクションです。QueryFederator
では、フレームワークは子QueryHandlers
のリストを取得し、すべてのQueryExecutors
が見つかるまで再帰的に検索できます。
フレームワークでQueryExecutor
のexecute
メソッドがコールされ、QueryResult<Row>
が取得されます。これは、結果の行を反復して取得するjava.util.Iterator<Row>
の拡張です。
想定される実装は、次のクラスの作成です。
SampleQueryManager
...
SampleRowQueryExecutor
...
SampleRowQueryResult
...
SampleRow
...
注意: Frameworkアプリケーションでは、Oracle Secure Enterprise Searchがデフォルトの検索プラットフォームとして設定されています。かわりにこのサンプル・コードをWebCenter Portalのライブ検索アダプタで動作させるには、 |
類似の問合せマネージャとともに新しい検索ソースを追加するには:
Oracle JDeveloperで、検索ソースを追加するアプリケーションを開きます。
WebCenter共通ライブラリがプロジェクトに含まれていることを確認します。
アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。
図44-8に示すように、「WebCenter共通」ライブラリが含まれていない場合は、「ライブラリの追加」をクリックしてこれを選択します。
「OK」をクリックします。
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); } }
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; } }
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); } }
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(); } }
問合せマネージャを検索サービスに登録するには、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アプリケーションの拡張」を参照してください。
この項では、サービスの検索に使用可能な属性について説明します。次のサブセクションが含まれます:
WebCenter Portalの検索ユーザー・インタフェースでは、キーワード、日付およびユーザーの3つのフィールドに基づいて検索を公開します。各サービスは、その固有の検索実装において、これらのフィールドがその機能を最大限発揮できるようにします。少なくとも、キーワード・フィールドはサポートしています。独自の検索アダプタを定義する場合は、第44.3.9.3.8項「選択可能属性」で説明しているように、これらのフィールドを使用してアダプタの機能を最大限発揮できるようにする必要があります。
デフォルトでは、キーワード・フィールドはoracle.webcenter.search.TextPredicate
に含まれています。このフィールドには、複数の単語を、複数の単語を解釈する方法を決定するサービスとともに指定できます。コールがサービスに届く前に検索サービスでトークン化を実行することはありませんが、次にそのガイドラインをいくつか示します。
複数のトークンが引用符で囲まれている場合は、1つの単語として解釈されます。
OR
演算子が明示的に設定されていないかぎり、キーワード・フィールド内の単語間のデフォルトの結合はAND
であると見なされます。
最終変更日による問合せ結果のフィルタをサポートする検索サービスでは、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
タイプである必要があります。
日付間にはBETWEEN
句を使用できます。複雑な日付の条件では、単純なAttributePredicate
ではなく、1つのGREATER_THAN
AttributePredicate
と1つのLESS_THAN
AttributePredicate
に加え、AND
論理積演算子を含むComplexPredicate
を使用します。ComplexPredicate
は、AND
演算子を残りのフィールド(キーワードおよびユーザー・フィールド)に適用する必要があります。
このケースとデフォルトのケースを区別するには、サービス作成者は、日付条件の条件のタイプをチェックする必要があります。AttributePredicate
の場合は、デフォルトのケースです。ComplexPredicate
の場合は、特殊なケースです。
ユーザーによる問合せ結果のフィルタをサポートする検索では、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
タイプである必要があります。
サービス作成者は、ユーザー条件の条件のタイプをチェックする必要があります。AttributePredicate
がデフォルトのケースです。
検索サービス(コーラー)では、問合せのgetPredicate()
メソッドが、キーワードを保持するoracle.webcenter.search.TextPredicate
、日付条件を保持するoracle.webcenter.search.ComplexPredicate
、およびユーザー条件を保持するoracle.webcenter.search.AttributePredicate
を連結するoracle.webcenter.search.ComplexPredicate
を返す可能性があることを想定しています。
次の選択可能属性/列が、検索実装で検索アダプタによってサポートされる必要があります。
タイトル(必須)
指定されている場合は、返されるリソースごとに、検索サービス・ユーザー・インタフェースにタイトル列を表示できます。タイトル列に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_CREATOR
とAttributeConstants.WPSAPI_MODIFIED
です。作成者のタイプは、java.lang.String
です。
アイコン
指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにアイコン列を表示できます。アイコン列にはQNameAttributeConstants.WPSAPI_ICON_PATH
が指定されており、また、この列はクラス・パスでアクセス可能なアイコン・ファイルへの有効なパスに対応しています。アイコン・パスのタイプは、java.lang.String
です。
サイズ
指定されている場合は、返されるリソースごとに、検索サービスのユーザー・インタフェースにサイズ列を表示できます。サイズ列にはQNameAttributeConstants.DCMI_EXTENT
が含まれ、また、この列は検出されたリソースのサイズに対応しています。サイズのタイプは、java.lang.Number
です。
メイン・ビューまたはツールバーから検索を行うと、新たな検索ソースがシームレスに統合されます。テスト用に、新たに追加した検索ソースで結果を生成する条件を入力します。
WebCenter Portalの検索サービスは、リソース・アクション処理フレームワークを使用してリソース・ビューアを起動します。リソース・ビューアを登録し、検索によりカスタム・コンポーネントを検出できるようにする方法の詳細は、第7.3項「カスタム・コンポーネントによるFrameworkアプリケーションの拡張」を参照してください。
WebCenter Portalの検索サービスAPIを使わずFrameworkアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するためにOracle SES Webサービス問合せAPIを使用することで、引き続きOracle SESをアプリケーションの検索エンジンとして使用できます。また、検索結果のアクション処理はWebCenter Portalのリソース・アクション処理フレームワークを使用して管理できるため、検索結果内でアプリケーション・リソース(たとえば、ドキュメント)をクリックすると、リソースのビューア(たとえば、ドキュメント・リソース・ビューア)にリソースが表示されます。さらに、アプリケーションがWebCenter Portalナビゲーションを使用している場合は、特定のリソース・タイプをリソースのナビゲーション・ノードに表示できます。
この項では、検索結果のアクションを処理するための、リソース・アクション処理の有効化に必要な手順について説明します。
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
検索UIでアクション処理にwc_url
属性を使用します。
通常、検索UIでは、アクション処理にURL属性を使用します。ドキュメント・リソース・タイプの検索結果のアクション処理にリソース・アクション処理を使用するには、wc_url
属性を使用します。wc_url
属性を持つのは、ドキュメント・リソース・タイプの検索結果のみです。したがって、これは検索UIコードで条件付で実行する必要があります。
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>
この項では、検索サービスで発生する代表的な問題と解決方法について説明します。
問題
各サービスの問合せには設定タイムアウトがあります。特定のサービスから割当て時間内に検索結果が返されない場合は、タイムアウトになります。お知らせサービスやディスカッション・サービスはタイムアウトの影響を受けます。(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を使用してタイムアウトを構成できます。