Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発 11gリリース1 (11.1.1.8.3) E49666-03 |
|
前 |
次 |
この章では、設計時に検索を統合する方法について説明します。
この章の内容は、次のとおりです。
検索の管理および組込みの詳細は、次を参照してください。
Oracle Fusion Middleware Oracle WebCenter Portalの管理のWebCenter PortalのOracle Secure Enterprise Searchの管理に関する項
Oracle Fusion Middleware Oracle WebCenter Portalによるポータルの構築のポータルへの検索の追加に関する項
『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の情報の検索に関する項
WebCenter Portalは、直観的なユーザー・インタフェースを介して情報を検出できる統一された拡張可能なフレームワークを提供しています。このフレームワークでは、ユーザーが表示権限を持つ結果のみを返すことにより、アプリケーションのセキュリティ設定を順守します。
WebCenter Portalには、アプリケーションを検索する次の2つの方法が用意されています。
Oracle Secure Enterprise Search (SES)アダプタ
Oracle WebCenter Portalライブ(委任)検索
Oracle SESがデフォルトの推奨検索プラットフォームとして設定されます。WebCenter Portalのライブ検索より高度なスケーラビリティとパフォーマンスを提供する以外にも、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を使用した検索を実行するには、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を選択する場合は、次を参照してください。
|
この項の内容は、次のとおりです。
Oracle SESは最高のパフォーマンスを実現するための優先検索プラットフォームですが、Oracle SESを使用した検索を手動でオーバーライドして、アプリケーション検索でWebCenter Portalのライブ(委任)検索を使用することもできます。WebCenter Portalのライブ検索アダプタでは、ドキュメント、タグ、ピープル、ページなど、有効かつ検索可能なすべてのコンポーネントが対象になります。
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アダプタおよびライブ(委任)検索による実装はサポートしていません。
注意: ファセットにより、ユーザーは新規検索を実行せずに索引付きデータにナビゲートできます。検索文字列によっては大量の結果が検出される場合もありますが、検索でファセット・ナビゲーションを使用することで、ユーザーは探しているものを正確に割り出したり、新しい対象を検出することもできます。ファセットにより結果全体が考慮され、以前のリリースで検索の絞込みにかかった応答時間よりも速くなります。 |
「ツールとサービス - 検索」管理ページでは、どのように検索が構成されているかが表示されます。
アプリケーションでリソース・アクション処理が指定されていない場合は、検索結果をクリックすると、デフォルトのアクションにより、新しいブラウザ・ウィンドウに検索結果がレンダリングされます。また、ドキュメント、ディスカッションまたはお知らせなどの、リソース・ビューアを提供するコンポーネントからの結果が、リソース・ビューアに表示されます。リソース・ビューアとリソース・アクション処理フレームワークの詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。
実行時に、ユーザーはグローバルな(アプリケーション全体の)検索を実行できます。
実行時のWebCenter Portalの検索の詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「情報の検索」を参照してください。
この項では、アプリケーションに検索を追加するための手順について説明します。内容は次のとおりです。
構成プロセス全体のガイドとしてこの項のロードマップを使用してください。
注意: Oracle SESを使用した検索をオーバーライドして、オリジナルのWebCenter Portalライブ検索アダプタを使用する場合は、Oracle SESの構成は不要です。スキップして第45.2.3項「検索の設計時の追加」に進みます。 |
図45-1と表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. 次のいずれかのツールを使用して、フェデレーション・トラステッド・エンティティを作成します
|
||
5. 次のいずれかのツールを使用して、2つのクロール・ソース、ドキュメント・クローラとディスカッション・クローラを作成します
|
||
6. 次のいずれかのツールを使用して、クロール・ソースのソース・グループを作成します
|
||
7. ファセットおよびソート属性を作成します |
||
開発者 |
8. アプリケーションに検索を統合します |
8.a JDeveloperでOracle SESへの接続を構成します 注意: この手順で |
8.b JDeveloperでページに検索タスク・フローを追加します |
||
開発者または管理者 |
9. 次のいずれかのツールを使用してアプリケーションをデプロイします
|
|
管理者 |
10. (オプション)SSLを使用してOracle SESへの接続を保護します |
|
管理者 |
11. 次のいずれかのツールを使用して、追加検索パラメータを構成します
|
Oracle SESを使用して検索を実行するには、アプリケーションにOracle SES接続を追加する必要があります。詳細は、第45.3.1項「Oracle SESアダプタを使用する検索の構成」を参照してください。
第45.2.3項「検索の設計時の追加」に従って、検索ツールバーをページに追加します。
Oracle SESへの接続を設定します。アプリケーション・ナビゲータで、「アプリケーション・リソース」を開きます。「接続」ノードを右クリックして「接続の作成」を選択し、「Oracle SES接続」を選択します。
「アプリケーション・リソース」または「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サーバーの両方に存在するユーザーの名前を入力します。
図45-2のように表示されます。
「接続のテスト」をクリックして、ステータスを確認します。
接続が正常な場合は、「OK」をクリックします。
アプリケーションにOracle SES接続を含めると、「アプリケーション・リソース」パネルでの表示は図45-3のようになります。
これで、Oracle SES接続がconnections.xml
ファイルに追加され、例45-1に示すように、adf-config.xml
ファイルのデフォルト接続になります。
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に、Oracle SES 11.2.2.2に含まれる検索タスク・フローを示します。
表45-2 検索タスク・フロー
タスク・フロー | 定義 |
---|---|
検索 - ファセット検索 |
このタスク・フローでは、ファセット検索、検索ボックスのフィルタ検索およびドキュメント・サムネイルがサポートされており、豊富な検索操作を提供します。 注意: この検索タスク・フローは、Oracle SES 11.2.2.2が構成されている環境で提供されます。 |
検索 - 管理 |
このタスク・フローにより、検索の設定をカスタマイズする「ツールとサービス - 検索」管理ページにアクセスできます。 |
検索 - ツールバー |
このタスク・フローを使用すると、ユーザーは簡単な検索条件を入力し、アプリケーションから検索を実行できます。検索結果はリンクとしてレンダリングされます。 |
注意: 表示されているその他の検索タスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。 |
「検索 - ツールバー」タスク・フローでは、検索をアプリケーションに追加するための最も簡単な方法を提供します。「検索 - ツールバー」タスク・フローをアプリケーションに追加するには:
第2章「開発環境の設定」の手順に従い、カスタマイズ可能なページをアプリケーションで作成します。
注意: WebCenter PortalのFrameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。 |
検索を追加するページを開きます。
リソース・パレットで「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」と開きます。
「検索ツールバー」タスク・フローをページにドラッグ・アンド・ドロップします。
要求されたら、タスク・フローの作成方法として「リージョン」を選択します。
ADFライブラリの確認を求めるプロンプトが表示された場合は、「ライブラリの追加」をクリックします。
検索ツールバーが表示されたページを実行します。
アプリケーション・ナビゲータでこのアプリケーションを右クリックし、「実行」を選択します。操作の完了に時間がかかる場合があります。
セキュリティの定義時に作成したユーザー名と資格証明を入力します。
「検索 - ファセット検索」タスク・フローには、(検索の設定をカスタマイズするための)「検索」管理ページにアクセスするために「検索 - 管理」タスク・フローが必要です。「検索 - ツールバー」タスク・フローを追加した方法と同様に、このタスク・フローを追加します。
注意: 「リソース・パレット」には「検索 - 保存済検索」タスク・フローおよび「検索 - プリファレンス」タスク・フローも表示されます。これらのタスク・フローは、「検索 - ファセット検索」タスク・フローではサポートされていません。 検索で結果を返すには、その他のWebCenter Portalのツールとサービスがアプリケーションに組み込まれていることが必要です。 |
Oracle SESを使用して構成されていた以前のリリースでは、アプリケーション・スペシャリストは、検索(「検索 - 非ファセット検索」)タスク・フロー・パラメータを使用して検索をカスタマイズできました(つまり、検索結果のレイアウトおよび検索動作を変更できました)。これらのパラメータを使用すると、特定のポータル、ツール/サービスおよびドキュメントのタイプに検索のスコープを絞り込むことができました。さらに、検索結果の項目ごとに返される標準属性のリストにカスタム属性を追加したり、ユーザーが検索結果に使用可能な標準の絞込み機能を非表示にすることもできました。
WebCenter Portalリリース11.1.1.8およびOracle SES 11.2.2.2を使用すると、タスク・フロー・パラメータを使用するかわりに、検索はすべて「ツールとサービス - 検索」管理ページでカスタマイズされます。これはより簡単に検索を構成する方法です。この新しい検索操作はファセット検索を利用します。この新しい「検索 - ファセット検索」タスク・フローは、Oracle SES 11.2.2.2が構成されている場合にのみ使用されます。
ユーザーを検証および認証するために、アイデンティティ管理システムを使用して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セキュリティの構成」を参照してください。
この項では、検索で使用可能なオプション機能について説明します。内容は次のとおりです。
注意: 検索REST APIおよびデータ・コントロールは、Oracle SESを使用した検索でのみ使用可能です。これらは、WebCenter Portalのライブ(フェデレーテッド)検索を使用した検索ではサポートされていません。 |
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の結果が含まれていることを検証します。
「アプリケーション・ナビゲータ」で、「検索 - ツールバー」を使用して作成したページを右クリックし、「実行」をクリックします。
アプリケーションがADFセキュリティで保護されていれば、ログイン・ページが表示されます。操作の完了に時間がかかる場合があります。
セキュリティの定義時に作成したユーザー名と資格証明を入力します。
「送信」をクリックします。
ページがロードされると、検索ツールバーが表示されます。
図45-4に、Oracle SESがクロールする前の、検索文字列webcenterのサンプルの結果ページを示します。
図45-5に、Oracle SESが構成されてクロールした後の、サンプルの結果ページを示します。
関連項目: Oracle Fusion Middlewareドキュメント・ライブラリのOracle SESのドキュメント(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>
カスタム・コンポーネントでは、検索APIを実装し、そのコンテンツをWebCenter Portalの検索に公開できます。
詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java 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の使用」を参照してください。
各RESTサービスは、そのサービスのエントリ・ポイントを提供するリソース索引内にリンク要素を持っています。検索のエントリ・ポイントを検索するには、次のresourceType
を持つリンク要素を検索します。
urn:oracle:webcenter:searchcollection
対応するhref
またはtemplate
要素によって、URIエントリ・ポイントが提供されます。クライアントはこのエントリ・ポイントにHTTPリクエストを送信して、検索を操作します。
関連項目: リソース索引には次の2つの検索のエントリがあります。
この章では、
|
リソース索引の詳細は、第53.5.1項「リソース索引の使用」を参照してください。
リソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」を参照してください。
クライアントがエントリ・ポイントを識別すると、リソース・タイプの分類によりナビゲートして、必要な操作を実行できます。個々のリソース・タイプの詳細は、第53.5.2.1項「リソース・タイプ」の該当の項を参照してください。
検索の分類は次のとおりです。
urn:oracle:webcenter:searchcollection urn:oracle:webcenter:searchcollection:results
サービス・エントリ・ポイントの他、URLテンプレートにより、クライアントは、問合せパラメータを渡してリクエストをカスタマイズしたり戻されたデータのフォームを制御できます。
検索リソース内のコレクション・リソースは、ページ区切り(startIndex
およびitemsPerPage
)をサポートします。エントリ・ポイントはsearchcollection
要素にすべての結果を返します。dataType
引数の適切な値を指定して、様々なコンポーネントを問い合せます。
searchTerms
、data
および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
リクエスト - 本体: なし、パラメータ: q
、dataType
、startIndex
(ページ区切り)、itemsPerPage
(ページ区切り)、data
、facetParams
レスポンス - 本体: 検索結果およびオプションでファセット
ここで:
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
注意:
|
例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問合せ構文の詳細は、次を参照してください。
|
resultsの書込み可能要素
表45-3に、このリソースの書込み可能な要素を示します。
表45-3 resultsの書込み可能要素
要素 | タイプ | 説明 |
---|---|---|
|
String |
resultに書き込んだ任意のユーザー |
|
String |
一意識別子 |
|
String |
resultのサービスID、oracle.webcenter.doclibなど |
|
String |
resultのタイトル |
|
String |
resultの説明 |
|
日付 |
最終更新日 |
|
数値 |
resultのサイズ |
|
String |
ドキュメント識別子 |
|
日付 |
resultの最初の作成者 |
|
String |
resultタイプのアイコン |
|
String |
resultのURL |
|
String |
resultのMIMEタイプ |
|
String |
resultのGUID値 |
|
String |
ポータルのGUID値 |
|
String |
ポータル名 |
|
String |
resultのタイプ |
|
String |
resultの言語 |
|
String |
resultのスニペット |
|
String |
resultの更新者 |
|
任意 |
データで指定される任意のカスタム属性のリスト |
resultsからリンクされるリソース・タイプ
表45-4に、クライアントがこのリソースにリンクできるリソース・タイプを示します。
認証は、検索REST APIのメソッドを使用する前に必要です。
一般的なセキュリティに関する考慮事項については、第53.8項「WebCenter Portal REST APIのセキュリティに関する考慮事項」を参照してください。
この項では、各リソース・タイプについて説明します。内容は次のとおりです。
テンプレート・リンクおよびページ区切りリンクにはこのリソース・タイプを使用します。
このリソース・タイプを使用して、キーワードとファセットを含む問合せの読取り(GET
)に使用するURIを識別します。
リクエストはURLによって表され、レスポンスは検索結果のリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。
レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。
このリソース・タイプを使用して、ファセットを含む問合せの読取り(GET
)に使用するURIを識別します。ファセットは問合せ結果とともに返され、結果のフィルタに使用できます。これらのファセットをURLで使用し、author=weblogicおよびlast-modified-date=this weekのように特定のファセット値の結果を取得できます。
リクエストはURLによって表され、レスポンスはファセットのリストで、それぞれエンド・ユーザーがドリル・ダウンするアイテムを選択し、使用可能な場合は独自のRESTサービスへのリンクをクロスするうえで役立つメタデータを備えています。独自のRESTサービスが使用できない場合は、HREFリンクが提供されます。
レスポンスXMLでは、標準のURLパラメータと、前および次のリンクを使用してページを区切ることができます。(問合せが移入された)一般的なテンプレートに付属しているこれらのリンクにより、使用アプリケーションは固有のカスタム・ページ区切りを実行できます。
検索データ・コントロールを使用して、アプリケーションまたはカスタム・タスク・フローで動作するカスタマイズされた検索ユーザー・インタフェースを作成できます。このタスク・フローをADFライブラリにデプロイすると、タスク・フローをポータブルに利用できるようになります。たとえば、それをWebCenter Portalアプリケーションのリソース・カタログに追加して、サイト・テンプレートを作成できます。
検索データ・コントロールにはsearchSes
メソッドが含まれています。表45-5では、検索絞込み条件を設定し、検索の有効範囲を制限するためのパラメータについて説明します。
表45-5 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接続を備えたアプリケーションを作成します。接続が使用可能になると、「データ・コントロール」パレットに検索データ・コントロールが表示されます。
SearchServiceDC
からsearchSes
メソッドをドラッグ・アンド・ドロップします。
「ADFパラメータ・フォーム」を選択し、「フォーム・フィールドの編集」ダイアログを開きます。「OK」をクリックします。
SearchServiceDCResult
戻りオブジェクト・タイプからフォーム上に行アクセッサをドラッグし、「表」 - 「ADF読取り専用表」を選択します。「OK」をクリックします。
ページを実行し、適切な値を入力します。例:
keywords
: 任意の検索文字列
startIndex
: 0
itemsPerPage
: 10
アプリケーションへのデータ・コントロールの追加の詳細は、第4.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
...
注意: Oracle SESはデフォルトの検索プラットフォームとして設定されています。かわりにこのサンプル・コードをWebCenter Portalのライブ検索アダプタで動作させるには、 |
類似の問合せマネージャとともに新しい検索ソースを追加するには:
Oracle JDeveloperで、検索ソースを追加するアプリケーションを開きます。
WebCenter共通ライブラリがプロジェクトに含まれていることを確認します。
アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択し、「ライブラリとクラスパス」を選択します。
図45-6に示すように、「WebCenter共通」ライブラリが含まれていない場合は、「ライブラリの追加」をクリックしてこれを選択します。
「OK」をクリックします。
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); } }
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; } }
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); } }
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(); } }
問合せマネージャを検索に登録するには、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」を参照してください。
この項では検索に使用可能な属性について説明します。内容は次のとおりです。
WebCenter Portalの検索ユーザー・インタフェースでは、キーワード、日付およびユーザーの3つのフィールドに基づいて検索を公開します。各サービスは、その固有の検索実装において、これらのフィールドがその機能を最大限発揮できるようにします。少なくとも、キーワード・フィールドはサポートしています。独自の検索アダプタを定義する場合は、第45.3.6.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_AUTHOR
とAttributeConstants.WPSAPI_MODIFIED
です。作成者のタイプはjava.lang.String
です。
アイコン
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースにアイコン列を表示できます。アイコン列にはQNameAttributeConstants.WPSAPI_ICON_PATH
が指定されており、また、この列はクラス・パスでアクセス可能なアイコン・ファイルへの有効なパスに対応しています。アイコン・パスのタイプは、java.lang.String
です。
サイズ
指定されている場合は、返されるリソースごとに、検索のユーザー・インタフェースにサイズ列を表示できます。サイズ列にはQNameAttributeConstants.DCMI_EXTENT
が含まれ、また、この列は検出されたリソースのサイズに対応しています。サイズのタイプは、java.lang.Number
です。
メイン・ビューまたはツールバーから検索を行うと、新たな検索ソースがシームレスに統合されます。テスト用に、新たに追加した検索ソースで結果を生成する条件を入力します。
WebCenter Portalの検索は、リソース・アクション処理フレームワークを使用してリソース・ビューアを起動します。リソース・ビューアを登録し、検索によりカスタム・コンポーネントを検出できるようにする方法の詳細は、第4.3項「サービスでリソースをレンダリングする方法のカスタマイズ」を参照してください。
WebCenter Portalの検索APIを使用せずアプリケーション内でカスタム検索ユーザー・インタフェースを開発できますが、検索機能を実行するために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
ファイルを更新し、使用するリソース・アクション処理クラスを指定します。
例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>
この項では、検索で発生する代表的な問題と解決方法について説明します。
問題
各コンポーネントの問合せには設定タイムアウトがあります。特定のコンポーネントから割当て時間内に検索結果が返されない場合は、タイムアウトになります。お知らせやディスカッションはタイムアウトの影響を受けます。ページとポータルに、検索実行時からのタイムアウトを設定できます。
解決方法
設計時にパフォーマンスを改善するために、timeoutMs
の値(ミリ秒単位)を増やし、adf-config.xml
内でTimeoutMs
を準備できます。次は、ADF META-INF
フォルダの「アプリケーション・リソース」パネルにあるadf-config.xml
関連のフラグメントです。
<execution-properties timeoutMs="3000"prepare TimeoutMs="1000"/>
実行時には、WLSTまたはFusion Middleware Controlを使用してタイムアウトを構成できます。