ヘッダーをスキップ
Oracle WebCenter Framework開発者ガイド
10g(10.1.3.4)
B50831-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

8 Oracle Secure Enterprise Searchの統合

WebCenterアプリケーションでは、ページに表示されたデータまたはデータの一部をユーザーが検索できるようにすると便利です。このタイプの機能を実現するには、Webサービスのデータ・コントロールを使用して、Oracle Secure Enterprise Searchの検索機能を呼び出すことができます。

この章では、WebCenterアプリケーション内に検索を統合する方法を説明します。

詳細は、Oracle Secure Enterprise Searchに付属のドキュメントを参照してください。

Oracle Secure Enterprise Searchを使用するデータ・コントロールを構築する手順は、次のとおりです。

  1. Oracle Secure Enterprise Searchをまだインストールしていない場合は、ご使用のプラットフォームに対応するインストール・ガイドを参照して、インストールする必要があります。

  2. アプリケーションおよびプロジェクトを作成していない場合は、作成します。

  3. 検索を組み込むプロジェクトを右クリックし、ポップアップ・メニューから「新規」を選択します。

  4. 「Business Tier」を開き、「Web Services」を選択します。「Web Services」が表示されていない場合は、「フィルタ方法」から「すべてのテクノロジ」を選択します。

  5. 「項目」リストで、「Webサービス・データ・コントロール」を選択し、「OK」をクリックします。

  6. Webサービス・データ・コントロール・ウィザードの「ようこそ」ページが表示されたら、「次へ」をクリックします。

  7. データ・コントロールの名前を入力します。

  8. Web Services Description Language(WSDL)URLを入力します。Oracle Secure Enterprise SearchのWSDL URLのフォームは、次のとおりです。

    http://host:port/search/query/OracleSearch?WSDL
    

    注意:

    Oracle Secure Enterprise Searchがインストールされている場合、WSDLでリストされているエンドポイントは、プレースホルダの場所を指しています。データ・コントロールの作成後、「構造」ペインを使用して、エンドポイントURLを修正する必要があります。この手順については、後で説明します。

  9. 「サービス」をクリックします。ウィザード・ページは、図8-1のように表示されます。

    図8-1 Webサービス・データ・コントロール・ウィザードの「データソース」ページ

    図8-1の説明が続きます
    「図8-1 Webサービス・データ・コントロール・ウィザードの「データソース」ページ」の説明

  10. 「次へ」をクリックします。

  11. 「データ・コントロール操作」ページから、公開するメソッドを「使用可能」リストから「選択済」リストに移動することにより選択します。この例では、「doOracleSimpleSearch」「選択済」リストに移動します。完了すると、ページは図8-2のように表示されます。

    図8-2 Webサービス・データ・コントロール・ウィザードの「データ・コントロール操作」ページ

    図8-2の説明が続きます
    「図8-2 Webサービス・データ・コントロール・ウィザードの「データ・コントロール操作」ページ」の説明

  12. この例では、ここで「終了」をクリックしてかまいません。最初にウィザードの他のページを確認する場合は、ウィザードの最後のページが表示されるまで「次へ」をクリックしてから、「終了」をクリックします。

  13. アプリケーション・ナビゲータで、「アプリケーション・ソース」を開き、project_nameを開きます。

  14. 「DataControls.dcx」をクリックすると、アプリケーション・ナビゲータの下の「構造」ペインにその構造が表示されます。

  15. 「構造」ペインでデータ・コントロールを右クリックし、ポップアップ・メニューから「Webサービス接続の編集」を選択します。

  16. 図8-3に示すように、「Webサービス接続の編集」ダイアログ・ボックスが表示されます。前述のように、WSDLでリストされているエンドポイントは、プレースホルダの場所を指しています。ここで、エンドポイントURLを修正する必要があります。

    図8-3 「Webサービス接続の編集」ダイアログ

    図8-3の説明が続きます
    「図8-3 「Webサービス接続の編集」ダイアログ」の説明

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

  18. これで、新しいデータ・コントロールをドロップするページを作成できます。プロジェクトを右クリックし、ポップアップ・メニューから「新規」を選択します。

  19. 「Web Tier」で、「JSF」を選択します。「項目」で、「JSF JSP」を選択します。

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

  21. 「ファイル名」以外はすべてデフォルト設定を受け入れて、JSF JSPウィザードの手順を実行します。わかりやすいファイル名を選択してください。

  22. 準備ができたら、「終了」をクリックします。

  23. エディタにJSF JSPが表示されたら、「データ・コントロール」タブをクリックして、データ・コントロール・パレットを起動します。データ・コントロール・パレットに、データ・コントロールが表示されます。表示されない場合は、前の手順を適切に完了していないか、アプリケーションが間違っている可能性があります。

  24. データ・コントロールの最上位ノードを開き、「Return」を開き、「Return」を開きます。すると、データ・コントロールにより返されるすべてのデータが表示されます。

  25. この例では、「resultElements」をページにドラッグ・アンド・ドロップします。

  26. 表示されるポップアップ・メニューから、「表」「ADF読取り専用表」の順に選択します。アクション・バインディング・エディタが表示されます。

  27. 簡単にするために、表8-1に示すように各パラメータの値をハードコードできます。

    表8-1 アクション・バインディング・エディタのパラメータ値

    パラメータ

    query

    検索する文字列(oracleなど)

    startIndex

    1

    docsRequested

    20

    dupRemoved

    false

    dupMarked

    false

    returnCount

    false


  28. 完了すると、ダイアログは図8-4のように表示されます。「OK」をクリックします。

    図8-4 アクション・バインディング・エディタ

    図8-4の説明が続きます
    「図8-4 アクション・バインディング・エディタ」の説明

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

  30. 「表の列の編集」ダイアログが表示されます。「lastModified」を選択し、「削除」をクリックします(図8-5)。

    図8-5 「表の列の編集」ダイアログ

    図8-5の説明が続きます
    「図8-5 「表の列の編集」ダイアログ」の説明

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

  32. 今度は、ページ定義からもlastModified列を削除する必要があります。「構造」ペインでページを右クリックし、ポップアップ・メニューから「ページ定義に移動」を選択します。

  33. <Item Value="lastModified"/>を見つけて削除します。

  34. これで、ページを実行できます。アプリケーション・ナビゲータで、ページを右クリックし、ポップアップ・メニューから「実行」を選択します。

  35. 出力を参照し、oracleという語がすべて<b></b>タグで囲まれていることに注意してください。図8-6に、この出力のサンプルの一部分を示します。今のところ、この列をレンダリングするviewコンポーネントをOutputFormattedに変換していないので、検索ヒットは書式設定されていません。

    図8-6 (ヒットが書式設定されていない)検索済出力のサンプル

    図8-6の説明が続きます
    「図8-6 (ヒットが書式設定されていない)検索済出力のサンプル」の説明

  36. Oracle JDeveloperに戻り、エディタでJSPのタブをクリックしてJSPに戻ります。

  37. 「構造」ペインで、oracleを含む列の1つ(「説明」列など)を見つけて開きます。

  38. その列の「af:outputText - #{row.snippet}」を右クリックし、ポップアップ・メニューから「変換」を選択します。「変換」ダイアログが表示されます。

  39. 「OutputFormatted」を選択し、「OK」をクリックします。

  40. 「変換の確認」ダイアログが表示されたら、再び「OK」をクリックします。

  41. ページを再び実行して、変更内容を確認します。図8-7に示すような出力が表示されます。今度は、oracleという語を囲む<b></b>が、検索ヒットを太字で表示するように解釈されていることに注意してください。

    図8-7 (ヒットが書式設定されている)検索済出力のサンプル

    図8-7の説明が続きます
    「図8-7 (ヒットが書式設定されている)検索済出力のサンプル」の説明

  42. 「構造」ペインを使用して、表の余分な列を削除します。完了すると、row.authorrow.titlerow.snippetrow.scoreおよびrow.languageのみが残ります。

  43. ページ上に残っている列ごとに、手順35〜40を繰り返します。

  44. 再びページを実行します。表の右上隅の自動ページ区切りに注意してください。この動作の原因は、Oracle ADF表のデフォルトの行数が10であるのに、20の結果を返すように選択したためです。ページをさらに拡張するには、推定件数を指定します。

    データ・コントロール・パレットで、「estimatedHitCount」をページにドラッグ・アンド・ドロップします。ポップアップ・メニューから、「テキスト」「ラベル付ADF入力テキスト」の順に選択します。

  45. この表の便利な機能として他に、ドキュメントを開くためのリンクがあります。これを設定するには、コンポーネント・パレット「ADF Faces Core」の下の「GoLink」をドラッグして、「title」列の「outputFormatted」の上にドロップします。この手順は、「構造」ペインのほうが多少正確に実行できることに注意してください。プロパティ・インスペクタで、Text属性をOpenに変更します。

  46. 「構造」ペインで「af:goLink - Open」を右クリックし、ポップアップ・メニューから「プロパティ」を選択します。

  47. 「Destination」の隣の「バインド」ボタンをクリックします。

  48. 「データにバインド」ダイアログで、「JSPオブジェクト」の下の「行」ノードを開き、「url」行を見つけて「式」に追加します。「OK」をクリックします。

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

  50. 「ソース」タブをクリックします。ページのソースに、次のような行があります。

    <af:goLink text="Open" destination="#{row.url}"/>
    
  51. 再びページを実行します。「開く」リンクおよびestimatedHitCountが存在し、適切に動作することを確認します。

  52. 最後に追加する機能は、ユーザーが独自のカスタム検索を実行できる、入力ボックスおよび送信ボタンです。「設計」タブをクリックします。

  53. データ・コントロール・パレットに戻り、データ・コントロールの下の最初の「パラメータ」ノードを開きます。

  54. 「問合せ」をドラッグして、表の左上隅にドロップします。ポップアップ・メニューから、「テキスト」「ラベル付ADF入力テキスト」の順に選択します。

  55. データ・コントロール・パレットから「doOracleSimpleSearch」をドラッグし、作成したパラメータ入力ボックスの真下にドロップします。ポップアップ・メニューから、「メソッド」「ADFコマンド・ボタン」の順に選択します。

  56. 誰かが最初にページを実行したときにエラーが発生することがないように、問合せパラメータにはデフォルト値を設定する必要があります。ページ定義PageDef.xmlに移動します。

  57. 「構造」ペインで、「実行可能ファイル」の下の「変数」を開き、「doOracleSimpleSearch_query」を選択します。

  58. プロパティ・インスペクタで、「DefaultValue」プロパティを選択し、デフォルトの検索語(oracleなど)を入力します。

  59. ページを実行します。ボックス内に別の検索語を入力し、作成したボタンをクリックします。結果が変わるはずです。


    注意:

    返される結果の数を以前に制限したため、ページの一番下に追加したヒット数は、現在強制的に制限されています。この問題を修正し、正確なヒット数が表示されるようにするには、PageDef.xmlファイルで次の行を見つけます。
    <NamedData NDName="returnCount" NDValue="false"   NDType="java.lang.Boolean"/>
    

    この行を次のように変更します。

    <NamedData NDName="returnCount" NDValue="true"
       NDType="java.lang.Boolean"/>