Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g(10.1.3.1.0) B31854-01 |
|
この章では、Oracle Application Server Personalizationで使用するOC4Jに付属のタグ・ライブラリについて説明します。このライブラリを使用するには、OracleAS Personalization製品が適切にインストールされていることが前提です。
この章には、次の項目が含まれます。
OracleAS Personalizationの詳細は、『Oracle Application Server Personalization管理者ガイド』および『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
この項では、パーソナライズについて紹介します。まず、一般的な概念、続いて、特にOracleによる実装の概要について説明します。
この概要では、パーソナライズの一般的な概念について紹介し、概念が混同されることがある、パーソナライズとカスタマイズの違いについて説明します。
パーソナライズは、行動、購入、レーティングおよびデモグラフィック・データに基づいて、アプリケーション・ユーザー向けにリコメンデーションを作成する機能です。リコメンデーションは、ユーザーのアプリケーション・セッション中にリアルタイムで作成されます。ユーザーの動作はデータベース・リポジトリ内のプロファイルに保存され、将来のユーザーの動作を予測するためのモデルの構築に使用されます。
将来のユーザー・セッションでは、これらのモデルを使用して、購入する製品またはサービス、あるいはアクセスするWebサイトなど、類似ユーザー(または単一セッション内では、同じユーザー)の動作および希望を予測します。ユーザーは、これらの予測に基づいたリコメンデーションを受け取ります。
OracleAS Personalizationタグ・ライブラリは、パーソナライズの2つの主要機能を公開します。
典型的なパーソナライズ・スキーマでは、次のいずれか、またはすべてが考慮されます。
Oracleで実装され、この章で説明しているパーソナライズとは、コンテンツが自動的および暗黙的に選択される、一連の複雑で動的な機能です。通常、「パーソナライズ」と呼ばれるが、実際には単に「カスタマイズ」である、より単純で静的なWebサイトの機能とは混同しないでください。
多くのサイトが、たとえば、地域の天気、関心のある株価情報、好きなスポーツといった項目をユーザーに示し、選択した項目に基づいて出力を表示するなどのカスタマイズを提供しています。これは、確かに配信されるコンテンツをパーソナライズしていますが、プロセスは静的で、明示的なユーザーの関与を必要とします。ユーザーが、他の項目を選択することで明示的に変更する機会が与えられるまで、コンテンツの焦点は変わりません。
パーソナライズは、ユーザーの直接的なリクエストなしに、ユーザーのコンテンツを自動的に選択します。コンテンツの選択プロセスは表示されません。さらに、動作を観察することで、システムがユーザーの傾向をより理解するようになると、将来の動作および関心を予測するうえで正確性が増します。
OracleAS Personalizationは、Oracle Databaseのデータ・マイニング・アルゴリズムを使用して、ユーザーに最も関連するコンテンツを選択します。通常、過去および現在におけるユーザーの動作に関する大量のデータを使用して、OracleAS Personalizationリコメンデーション・エンジン(「リコメンデーション・エンジンの概要」で定義)によって、リコメンデーションが計算されます。このアプローチは、常識的な経験則に依存し、システム内でルールを手動定義する必要がある他のアプローチよりも優れています。
OracleAS Personalizationを使用するアプリケーションは、OracleAS Personalization自体がターゲット・データを提供して、データ収集を制御します。このプロセスにより、アプリケーションが、最低限の有用性しかないデータを大量に収集するのを避けることができます。
OracleAS Personalizationタグ・ライブラリにより、幅広い層のJSP開発者が、この機能をHTML、XMLまたはJavaScriptページで使用できるようになります。タグ・インタフェースのレイヤーは、リコメンデーション・エンジンの低レベルのJava APIの最上部に位置します。
OracleAS Personalization環境のチューニングおよび構成に応じて、リコメンデーションは、たとえば次のような1つ以上の要素に基づきます。
OracleAS Personalizationには、次の主要コンポーネントが含まれています。
これらについては、次の各項で紹介します。
OracleAS Personalizationマイニング・テーブル・リポジトリ(MTR)には、データ・マイニングに使用されるスキーマおよびデータが含まれています。これは、次のデータを含むデータベース表およびビューのセットです。
これらの要素は、ともに、将来のユーザーのプリファレンスを予測するためのモデルの構築に使用されます。
基本的に、モデルはユーザー・データから演繹された規則の集合です。規則の簡素化された例は、「55歳以上の女性で、収入が$150,000から$200,000の間で、最近スキューバ・ダイビング用のタンクとマスクを購入した人は、フィンとウェット・スーツも購入するであろう」です。
OracleAS Personalizationでは、モデルは、マイニング・テーブル・リポジトリから収集された記録済の事実に基づいて開発されます。モデル内の規則は、特定の種別のユーザーに典型的であると推測される行動に関する常識的な仮定ではなく、使用可能なデータから厳密に演繹されます。特定のユーザーの特性が、最も使用可能なモデルの規則にどの程度近いかによって、生成されるリコメンデーションが正しいか、または適切であるかどうかが決まります。
OracleAS Personalizationマイニング・オブジェクト・リポジトリ(MOR)は、OracleAS Personalizationデータ・マイニング・スキーマで定義されているとおりに、マイニング・メタ・データおよびマイニング・モデルの結果を保持するデータベース・スキーマです。マイニング・オブジェクト・リポジトリは、データ・マイニング・システムへのログイン、ログオフおよびOracleAS Personalizationイベントのスケジュールの焦点として機能します。モデルは、OracleAS Personalizationデータ・マイニング・アルゴリズムに基づいて、マイニング・テーブル・リポジトリから構築されます。
関連するアルゴリズムをチューニングして、データの異なる特性の比重を変更することにより、同じデータから異なるモデルを構築できます。したがって、ある状況において、マイニング・オブジェクト・リポジトリ内に複数のモデルが存在することがあっても、特定の時間には、1つのモデルのみがリコメンデーション・エンジンにデプロイされます。
OracleAS Personalizationリコメンデーション・エンジン(RE)は、デプロイ中にOracleAS Personalizationモデルをダウンロードし、リコメンデーションのリクエストを処理する際に、適切なユーザー・プロファイル・データをマイニング・テーブル・リポジトリからフェッチするOracle Databaseスキーマです。各エンジンは、次のようなアクティビティを実行します。
リコメンデーション・エンジンは、リコメンデーション・リクエストを実行時に処理し、パーソナライズ・リコメンデーションを生成します。また、セッション中にユーザーのプロファイル・データを収集して、Webサイトの現在におけるユーザーの動作を追跡します。この追跡機能により、匿名ユーザーについても登録済のユーザーと同様に、セッション固有のパーソナライズが可能になります。
リコメンデーション・エンジンの移入には、モデルの構築、およびリコメンデーション・エンジン・スキーマへのデプロイが含まれます。これらのステップは、バックグラウンドで行われます。特定のリコメンデーションは、このスキーマ内のPL/SQLストアド・プロシージャによって計算されます。
リコメンデーション・エンジンは、リコメンデーション・エンジン・ファームに含まれる必要があります。ファーム内のすべてのエンジンは、同じモデルでロードされ、同様に使用できます。ファームは1つのエンジンのみで構成できますが、ロード・バランシングおよびフェイルオーバーに対応するため、ファーム内に複数のエンジンを含めることをお薦めします。望ましい効果を得るため、これらのエンジンは、異なる物理的システム上の別のデータベース内に置かれます。
OracleAS Personalizationには、リコメンデーション・エンジンとともに使用するJava APIが用意されています。APIは、主に、特定のユーザーに対する適切な項目のリコメンデーションのリクエストに使用されます。APIは、リコメンデーション・エンジン・データベース・スキーマのストアド・プロシージャへのクライアント・インタフェースとして基本的に機能します。リコメンデーションは、JDBCの接続プーリングを使用して、ストアド・プロシージャへのJDBCコールにより計算されます。
またAPIは、ユーザー・プロファイル・データを収集するための、データ・コレクション・キャッシュと呼ばれる短期的な記憶域を提供します。これらのデータは、リコメンデーション・エンジン表を介してマイニング・テーブル・リポジトリに周期的にフラッシュされます。ユーザー・データを収集した直後にリコメンデーション・エンジンに書き込まず、この方法でデータをキャッシュすることで、必要なJDBCコールの数を最小限に抑えることができます。ただし、リコメンデーションがリクエストされるたびに、同期JDBCコールが生成されることに注意してください。リコメンデーション・リクエストの結果は、一意でパーソナライズされているという性質上、キャッシュされません。
JSPプログラマ向けに、リコメンデーション・エンジンAPIの機能は、OracleAS Personalizationタグ・ライブラリの機能にラップされているため、このドキュメントでは、APIの詳細は説明していません。このタグ・ライブラリには、便利な自動化機能が含まれていますが、APIを直接使用する場合には明示的に管理する必要があります。
次の項では、OracleAS Personalizationリコメンデーション・エンジンの概念および機能の概要を説明します。
リコメンデーション・エンジンには、2つの種別のユーザーがあります。
OracleAS Personalizationでは、項目は、単一の項または最小の情報単位を示す一般的な概念です。次に例を示します。
項目は、複数の方法で使用されます。
インベントリ・システム内の各項目は、すべて、分類に属する必要があります。OracleAS Personalizationでは、分類は項目の構造的構成です。通常、項目の構成は、ツリーまたはツリー集合のような階層構造で、より広範なグループから先端の各項目へと枝分かれします。分類に含める項目は排他的ではありません。同じ項目を複数の分類に含めることができます。分類は、long整数である分類IDで示されます。
アプリケーション・ホストであるWebサイトまたはカテゴリは、異なるクライアント・カタログまたはWebサイトに異なる分類IDを使用することにより、クライアント・データ・セットを区別できます。それぞれのケースで適切な分類が使用されるように、適切な処理を使用してユーザーの種別が識別されます。たとえば、www.oracle.com
のカスタマが、DBAまたはWeb開発者であることを示したとします。これによって、このユーザーの将来のアクセスをパーソナライズするのに使用される分類が決定されます。たとえば、プロモーション・キャンペーン、バナーおよび本やトレーニングの販売などのオファーが、Web生産性ツールの分類またはデータベース管理ツールの分類から取り出されます。
分類内の各項目は、カテゴリにグループ化できます。分類の構造では、カテゴリは、関連する項目のグループで構成される中間ノードです。ただし、ある項目を複数のカテゴリ内に含めることができる点に注意してください。たとえば、『イングリッシュ・ペイシェント』という映画は、「小説の映画化」、「アカデミー賞受賞」、「外国」、「ドラマ」などのカテゴリに属すると考えられます。
レーティング値自体のパラメータも必要であるレーティング項目以外、項目は一般的に、type
パラメータおよびID
パラメータによって一意に識別されます。アプリケーションが、各項目のタイプおよびIDを識別するなんらかのインベントリ・システムに依存できることが前提です。タイプは、「靴」または「スポーツ・イベント」などです。IDは識別番号です。単一の分類内で、2つの項目に同じIDを付けることはできません。
パーソナライズ・フィルタ処理設定の一部では、リコメンデーションが、特定の映画のタイトルなどの項目ではなく、「ドラマ」などのカテゴリを示す場合があることに注意してください。この場合は、リコメンデーションの項目タイプは、Categoryです。「リコメンデーションのフィルタ処理」も参照してください。
OracleAS Personalizationタグ・ライブラリには、JSPページでの項目およびリコメンデーションの使用を簡素化するのに便利な、oracle.jsp.webutil.personalization.Item
というpublicクラスが含まれています。このクラスを使用して、タイプ、IDおよび予測値にアクセスします。詳細は、「項目クラスの説明」を参照してください。
リコメンデーションとして戻された項目には、次のような予測値が含まれます。
ナビゲーション項目は、ページの表示、リンクの選択、またはボタンのクリックなど、Webアプリケーションが「ヒット」として考慮する可能性のある動作を示します。
レーティングは、事前定義のスケールでカスタマのプリファレンスを数量で示す方法です。たとえば、映画の場合、ユーザーが好きな映画には5つの星、つまり5.0のレーティングを付けるという5段階方式を採用する場合があります。将来のセッションにおいて、OracleAS Personalizationは、このユーザー、および類似した興味や背景を持つユーザーにとって、この映画が高い関心を引くであろうと予測します。ユーザーが大好きというわけではないが、普通程度に好むという映画には、3つ半の星、つまり3.5のレーティングが付く可能性があります。
ユーザーが、Webサイトで対話的に項目にレーティングを付けると、絶対的なレーティング値が記録されます。できるだけ望ましい粒度が得られるように、レーティングは浮動小数点の数値です。
OracleAS Personalizationアルゴリズムによると、リコメンデーション・エンジンAPIによって(または、JSPページの場合はリコメンデーション・タグによって)戻されるレーティングが予測値です。
OracleAS Personalizationレーティング・システムでは、前例の0.0から5.0のように、境界は構成可能です。これは、マイニング・テーブル・リポジトリのMTR.MTR_BIN_BOUNDARY
表で指定されます。
ランキングは、項目のグループ間で、項目の関連ランクを示す整数です。項目は、購入される(購入する商品の場合)または選択される(アクセスするURLリンクの場合)と予想される確率に基づいてソートされます。確率は、データ・マイニング・モデルおよびカスタマのプロファイル・データを使用して計算されます。
たとえば、項目A、項目Bおよび項目Cという3つの項目がリコメンデーションとして戻されたと仮定します。ユーザーが関心を持つ確率が、Aが0.9、Bが0.55、Cが0.83の場合、Aには1、Bには2、Cには3のランキングが付きます。
項目のランキングは、相対的で動的です。相対的である理由は、ランキングは、相互に比較される項目に対してのみ意味があり、特定の順序でソートされるからです。動的である理由は、同じ項目のランキングが別のカスタマまたは異なる項目に対してランキングされるときには変わる可能性があるからです。
Webアプリケーションは、ステートフルまたはステートレスのいずれかです。つまり、アプリケーションは、リクエスト間でユーザー・セッションおよびユーザー固有の情報をサーバー上で保持する場合もあれば、しない場合もあります。リコメンデーション・エンジンAPIおよびタグ・ライブラリは、両方の状況を処理するように設計されています。リクエスト間でユーザー情報を保持することには明白な利点がありますが、スループット向上のため、ステートレス・アプリケーションに依存している大規模なサイトもあります。
ただし、リコメンデーション・エンジンは、Webアプリケーションのセッション動作に関係なく、リコメンデーション・エンジン・データベース・スキーマ内におけるユーザー・セッションを常に追跡します。
リコメンデーション・エンジンは、ユーザーIDによってユーザー・セッションを追跡します。したがって、匿名ビジターに一時ユーザーIDを割り当てる場合、注意が必要です。すべての匿名ビジターに同一のIDが使用され、全員の動作が追跡された場合、これらのビジターから収集されたデータは単一のリコメンデーション・エンジン・セッションから取得されたとみなされるため、いずれか1人の匿名ビジターの動作がその他のビジターに対するリコメンデーションに影響を与えることになります。この問題は、リコメンデーション・エンジン内で一意の一時IDを各匿名ビジターに割り当てることで回避できます。
リコメンデーション・エンジン・セッションが確立され、データが移入された後は、アプリケーションは、そこからリコメンデーションをリクエストできます。OracleAS Personalizationは、適切なリコメンデーションをコール側アプリケーションに戻し、その後、アプリケーションはユーザーに何をどのように渡すか決定します。
JSPページでは、アプリケーションは、複数のリコメンデーション・タグの1つを使用してリコメンデーションをリクエストできます。リコメンデーション・エンジンは、チューニングおよびフィルタ処理設定に準拠し、ユーザー・データに基づいて一連の提案された項目を戻します。OracleAS Personalizationタグ・ライブラリを使用する場合、タグ属性または構成ファイルを使用してチューニングおよびフィルタ処理設定を指定できます。
JDBCコールにより、一連のリコメンデーションが、リコメンデーション・エンジン・データベース・スキーマ内で生成されます。コールに要する時間は、場合により異なります。これは、基準、処理が必要なデータ・レコードの数、規則表のサイズおよびユーザー・プロファイル・データのサイズなどの要素、ならびにリコメンデーション・リクエストの仕様によって決まります。リコメンデーションは、パーソナライズ・モデルに基づいて選択され、アプリケーションが接続されているリコメンデーション・エンジンにデプロイされます。OracleAS Personalizationタグを使用するとき、startRESession
タグの属性を使用して、使用するリコメンデーション・エンジンを指定します。
抱合せ販売のリコメンデーションの場合は、アプリケーションは、過去にユーザーが関心を持った1つ以上の購入項目またはナビゲーション項目を入力として渡す必要があります。抱合せ販売のリコメンデーションは、渡される1つ以上の項目に基づき、また、おそらく過去または現在のユーザー・データにも基づきます。
リコメンデーション項目は配列で戻され、各リコメンデーションの予測値(「レーティングとランキング」で説明するように、レーティングまたはランキングのいずれか)および配列全体のインタレスト・ディメンションが含まれます。リコメンデーションとして戻される項目について、インタレスト・ディメンションは、項目がユーザーにとってどのような関心の対象となるか(購入項目、ナビゲーション項目またはレーティング項目)を示します。
リコメンデーション・エンジンAPIにより、リコメンデーションは戻される前に分類に基づいてフィルタ処理されます。
次の項では、OracleAS Personalizationタグ・ライブラリの機能の概要を説明します。各タグの説明および構文は、「パーソナライズ・タグおよびクラスの説明」を参照してください。
リコメンデーション・エンジン・セッションの作成操作および閉じる操作は、startRESession
タグおよびendRESession
タグにより処理されます。OracleAS Personalizationを使用するJSPページの場合は、少なくとも1つのstartRESession
タグが実行され、このタグが特定のリコメンデーション・エンジン・セッションについて検出される最初のOracleAS Personalizationタグであるかどうか確認する必要があります。
OracleAS Personalizationタグ・ライブラリは、HTTPセッション・オブジェクトによって状態情報を保持するステートフル・アプリケーションと、保持しないステートレス・アプリケーションのいずれかをサポートできます。startRESession
のsession
属性を使用して、使用するモードを指定できます。タグ・ライブラリでHTTPセッション・オブジェクトが使用されるようにする場合は、「true
」設定、HTTPセッションでいずれのタグも使用しない場合は、「false
」設定を使用します。
startRESession
タグのsession
属性を「true
」に設定すると、session
設定をJSP page
ディレクティブで「true
」に設定した場合と同様の結果が得られます。これらの違いは、startRESession
タグで属性を「true
」に設定した場合、このタグを含むページ全体のみでなく、同じリコメンデーション・エンジン・セッション内で実行するパーソナライズ・タグを含んだその他のページも影響を受ける点です。
startRESession
タグが実行された後、パーソナライズ・タグは、Webクライアントとリコメンデーション・エンジン・データベースとの関係を維持するため、必要に応じて、後続のパーソナライズ・タグを同じユーザーに適用できます。
startRESession
タグには、リコメンデーション・エンジン名、およびタグ属性設定やpersonalization.xml
構成ファイル設定を組み合せた情報を指定します。
リコメンデーション・エンジン・セッションが同じWebクライアントに対して以前に開始されたが、その後endRESession
タグが実行されていない場合、startRESession
タグによって操作が実行されません。これは、JSPページが実行される順序について柔軟性が得られるため便利です。アプリケーションの複数のページで、startRESession
タグを配置しても問題はありません。
このタグの詳細は、「startRESessionパーソナライズ・タグ」を参照してください。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
HTTPセッションを使用するステートフル・アプリケーションの場合、セッション情報は、JSPの暗黙的なsession
オブジェクトである、標準のHttpSession
インスタンスで保持されます。
startRESession
タグが検出されると、session
属性が「true
」(デフォルト)に設定されている場合、セッション・オブジェクトが存在しなければ自動的に作成されます。
ステートレス・アプリケーションの場合、タグ・ライブラリは、Cookieを使用して内部セッションを追跡します。したがって、ステートレス・アプリケーションを使用する場合は、パーソナライズ・タグは、クライアント・ブラウザがCookieを受け入れるときにのみ機能する点に注意してください。ブラウザがCookieを拒否するか、または機能不足のためにCookieを受け入れられない場合は、ステートフル機能が必要です(startRESession
タグをsession="true"
に設定)。
ステートフル・アプリケーションが、特定のリコメンデーション・エンジン・セッションを必要としなくなったときは、endRESession
タグを使用できます。startRESession
タグを使用し、endRESession
タグを繰返し実行すると、いずれの操作も行われなくなるため、このタグをアプリケーションの複数のページに配置しても問題はありません。
endRESession
タグは、ステートレス・アプリケーションには何の影響もありません。
ステートフル・アプリケーションでのendRESession
タグの使用はオプションの場合もありますが、次の状況では必要です。
これらの場合、endRESession
タグは、次のstartRESession
タグの前に実行される必要があります。
また、HTTPセッションが終了するかなり前にOracleAS Personalizationタグを使用してアプリケーションを停止し、リコメンデーション・エンジンのリソースを解放する場合にも、endRESession
タグの使用をお薦めします。
このタグの詳細は、「endRESessionパーソナライズ・タグ」を参照してください。
OracleAS Personalizationタグ・ライブラリには、項目の操作用に多数のタグが用意されています。ユーザーの動作情報を記録するタグ、以前に記録されたユーザーの動作情報を削除するタグ、リコメンデーションとして項目を出力するタグ、およびレーティングまたはランキングのいずれかに評価される特定の項目セットの入力用タグがあります。
次の項では、タグ・ライブラリの使用方法の概要について説明します。
次のタグは、リコメンデーション・エンジン・セッション・キャッシュにデータ項目を記録するか、または、セッション内で以前に記録された項目を削除するためのものです。
recordNavigation
およびremoveNavigationRecord
recordPurchase
およびremovePurchaseRecord
recordRating
およびremoveRatingRecord
recordDemographic
およびremoveDemographicRecord
セッション中、記録済の項目は、リコメンデーション・エンジンに周期的にフラッシュされます。フラッシュ後も項目を削除できますが、データベースのラウンドトリップが必要です。
注意
REFlushInterval
の関連情報は、「startRESessionパーソナライズ・タグ」を参照してください。
購入、ナビゲーションまたはレーティング項目を記録あるいは削除するには、タイプとID(レーティング項目の場合は値)を指定するか、項目配列と索引を配列内に指定することにより、記録あるいは削除する項目を特定する必要があります。詳細は、「入力項目の仕様」を参照してください。現在のユーザーに暗黙的に適用されるデモグラフィック項目を記録または削除するには、AGE
などのデモグラフィックのタイプ、および「44」などの値を指定する必要があります。詳細は、「デモグラフィック項目」を参照してください。
通常、remove
XXX
Record
タグを使用する必要はほとんどありません。record
XXX
タグを受信ページ内に配置する場合、removePurchaseRecord
またはremoveNavigationRecord
タグを使用する必要はありません。removeRatingRecord
およびremoveDemographicRecord
タグは、最初の入力が記録された後で、ユーザーが考えを変えるような状況にのみ使用する必要があります。関連情報は、「項目記録タグの使用モード」を参照してください。
タグ情報の詳細は、「項目記録および削除タグの説明」を参照してください。
次のタグは、リコメンデーションとして項目の配列を戻します。
このドキュメントでリコメンデーション・タグと呼ばれているselectFromHotPicks
、getRecommendations
およびgetCrossSellRecommendations
タグの場合、項目の配列は、分類全体から、または分類内のホット・ピックス・グループから戻される一連のリコメンデーションです。getCrossSellRecommendations
タグは、リコメンデーション(抱合せ販売ともいう)の基礎となる、一連の購入項目またはナビゲーション項目も入力として取得する必要があります。
ホット・ピックスはプロモーション項目、または特別に選択された他の項目グループです。選択する項目は、タグの属性により指定できます。ホット・ピックスの詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。
evaluateItems
の場合、評価する特定の項目セットを入力する必要があります。同じ項目の一部またはすべてが戻され(戻されない場合もある)、インタレスト・ディメンションに基づいてレーティングまたはランキングが決定されます。バックグラウンド情報は、「レーティングとランキング」を参照してください。
getRecommendations
およびevaluateItems
タグの場合、結果は、特定のユーザーに基づきます。ユーザーIDは、startRESession
タグにより指定され、すべての後続のパーソナライズ・タグに暗黙的に適用されます。getCrossSellRecommendations
タグは、一連の入力項目によって決まります。
次は、各リコメンデーション・タグの追加情報です。タグの詳細説明は、「リコメンデーションおよび評価タグの説明」を参照してください。
selectFromHotPicks
: 一連のホット・ピックス・グループの項目が戻されます。hotPicksGroups
属性を使用して、ホット・ピックス・グループを指定します。ユーザーによって結果が変わらないため、これはある意味ではOracleAS Personalizationタグ・ライブラリ内の「パーソナライズでない」タグです。ただし、パーソナライズ・アプリケーションで、初めてのビジターや、特定の地域または特定の嗜好を持つグループなどにプロモーションを表示するときに役立つ場合があります。
getRecommendations
: ユーザーに基づいて項目が戻されますが、fromHotPicksGroups
属性により指定される一連のホット・ピックス・グループの項目である必要があることを指定することもできます。
getCrossSellRecommendations
: 入力項目に基づいて項目が戻されます。また、戻される項目がfromHotPicksGroups
属性により指定される一連のホット・ピックス・グループの項目である必要があることを指定することもできます。入力項目は、1人のユーザーが以前に関心を持っていたものが想定されます。このタグの機能は、「過去にユーザーがこの入力項目を購入またはナビゲートしたと仮定すると、将来、このユーザーが最も関心を持つ可能性のある追加項目は何か」という質問に答えることです。この答えは、インタレスト・ディメンションに基づいて、購入またはナビゲートする追加項目になります。
入力として項目を取得するタグである、getCrossSellRecommendations
およびevaluateItems
タグの場合、1つ以上のネストされたforItem
タグを使用して希望の項目を指定することや、タグ属性を使用して項目の配列全体を入力することができます。入力項目の詳細は、「入力項目の仕様」を参照してください。
evaluateItems
およびgetCrossSellRecommendations
タグの場合、項目の出力配列用のタグ補足情報(TEI)変数の名前を指定するのに必要なタグ属性があります。getRecommendations
およびselectFromHotPicks
タグの場合、この属性はオプションです。また、この項目は、getRecommendations
またはselectFromHotPicks
タグ内にネストされているいずれのgetNextItem
タグにも順次、使用できます。
リコメンデーション・タグの場合、maxQuantity
属性を使用して、出力項目の最大数を指定できます。戻される項目の実際の数を決定するには、戻される項目に対するTEI配列変数のlength
属性を使用します。配列サイズ用に別のTEI変数は提供されません。TEI変数の詳細は、次の項の「戻される項目に対するタグ補足情報スクリプト変数の使用」を参照してください。
項目の配列を戻す各タグについて、次の配列タイプのスクリプト変数の使用を可能にするタグ補足情報(TEI)クラスがあります。
oracle.jsp.webutil.personalization.Item[]
項目の配列は、この変数で戻されます。これらの各タグには、変数名の指定に使用するstoreResultsIn
属性が含まれます。アプリケーションで配列をループして、HTML表などにすべての項目を表示できます。戻される項目数を決定するには、配列のlength
属性を使用します。
selectFromHotPicks
、getRecommendations
およびgetCrossSellRecommendations
タグは、NAVIGATION
、PURCHASING
またはRATING
のいずれかである、配列内の項目のインタレスト・ディメンションを示すTEI String
変数も戻します。インタレスト・ディメンションに変数名を指定するには、storeInterestDimensionIn
タグ属性を使用します。
入力項目を必要とする2つの一般的な状況があります。
getCrossSellRecommendations
またはevaluateItems
タグに指定する場合getCrossSellRecommendations
またはevaluateItems
タグに加えて、1つ以上のネストされたforItem
タグを使用します。forItem
タグは、希望の入力項目を選択するのに使用します。
これには、record
XXX
またはremove
XXX
Record
タグを使用します。
次の一般的な方法で、項目を指定できます。
record
XXX
およびremove
XXX
Record
タグの場合は関係ありません)。
使用例2と3の場合の詳細は、次の項の「項目配列の入力」を参照してください。
次のように、1つ以上の項目をgetCrossSellRecommendations
またはevaluateItems
タグに入力できます。
または
または
これらのプロシージャを1つ以上同時に使用できます。getCrossSellRecommendations
およびevaluateItems
タグは、複数のソースから入力を取得できます。
次のように、record
XXX
またはremove
XXX
Record
タグに項目を指定できます。
type
およびID
属性、また、recordRating
あるいはremoveRatingRecord
にはvalue
属性を使用して、項目を指定します(前述の使用例1)。recordDemographic
またはremoveDemographicRecord
の場合は、type
およびvalue
属性を使用します。
または
Item[]
オブジェクトの配列をタグに入力する場合、JSP式を使用して配列を指定する必要があります。これは、次のすべてのタグに適用されます。
inputItemList
属性を使用して、配列全体を入力する場合は、getCrossSellRecommendations
またはevaluateItems
itemList
およびindex
属性を使用して、配列を入力し、使用する1つの要素を指定する場合は、forItem
(getCrossSellRecommendations
またはevaluateItems
内)、recordPurchase
、recordNavigation
、recordRating
、removePurchaseRecord
、removeNavigationRecord
あるいはremoveRatingRecord
次の方法で配列を指定できます。
<% Item[] myList = newItem[] {newItem("shoes", 1)}; %> <op:evaluateItems inputItemList="<%=myList %> .../>
<op:getRecommendations storeResultsIn="myRecs" .../> <!-- First tag is closed, but TEI variable is still in scope. Later use it in second tag. --> <op:getCrossSellRecommendations inputItemList="<%=myRecs %>" />
性別および年齢など、ユーザーに関するバックグラウンド情報で構成されるデモグラフィック・データ項目は、recordDemographic
およびremoveDemographicRecord
タグでのみ使用されます。購入、ナビゲーションまたはレーティング情報を含まないため、リコメンデーション・タグあるいはgetCrossSellRecommendations
やevaluateItems
タグへの入力からは戻されません。
購入項目ならびにナビゲーション項目の場合はtype
およびID
によって識別されますが、デモグラフィック項目は、type
ならびにvalue
によって識別されます。これらは、recordDemographic
およびremoveDemographicRecord
タグのただ2つの属性です。次に示す複数のタイプが事前定義されており、マイニング・テーブル・リポジトリのMTR.MTR_CUSTOMERS
表に列として存在します。
GENDER
AGE
MARITAL_STATUS
PERSONAL_INCOME
HOUSEHOLD_INCOME
IS_HEAD_OF_HOUSEHOLD
HOUSEHOLD_SIZE
RENT_OWN_INDICATOR
ATTRIBUTE1
からATTRIBUTE50
まで、カスタマイズ可能な列が50あります。カスタマイズ可能なタイプを使用するには、次を実行する必要があります。
現在、項目記録タグの操作モードとして受信モードのみ使用できます。このモードでは、購入する項目やナビゲート先のURLなどをユーザーが選択すると、受信ページと呼ばれる送信先のページに、この項目を記録するrecord
XXX
タグが含まれます。
一般的な例として、getRecommendations
タグを使用するページで、順に表示するリコメンデーションのリストが生成されると仮定します。各リコメンデーション項目には、ユーザーが詳細情報を取得する場合に選択する「Details」リンク、およびユーザーが項目を購入する場合に選択する「Purchase」リンクが含まれます。「Details」を選択してユーザーがアクセスするページにrecordNavigation
タグ、「Purchase」を選択してユーザーがアクセスするページ(たとえば、購入確認ページ)にrecordPurchase
タグを配置できます。いずれの場合も、この項目に一意で指定されているタイプおよびIDは、受信ページ側ですでに認識されていると予想できます。
同様に、ユーザーがデモグラフィック情報を入力するJSPページにrecordDemographic
タグを配置することもあります。たとえば、ユーザーが配偶者の有無、年齢、個人収入を入力できるページがあるとします。44歳の独身で年収が$50,000のユーザーがこの情報を入力すると、HTMLフォームのバックグラウンドのターゲット・アクションとして、このプロファイルに合せて宣伝ページが作成されます。このページには、MARITAL_STATUS
、AGE
およびPERSONAL_INCOME
タイプのrecordDemographic
タグが含まれます。単一のページに複数のrecordDemographic
タグを使用できます。
通常、購入項目およびナビゲーション項目の場合はtype
とID
など、適切な属性を指定することにより、項目を識別します。または、以前に作成した項目リスト、およびそのリストに索引値を使用して、項目を選択します。アプリケーションは、session
またはrequest
オブジェクト内に項目リスト配列オブジェクトをコピーし、また、索引もパラメータとして受信ページに渡します。受信ページでは、項目リストがsession
またはrequest
オブジェクトから取得され、索引とともにrecord
XXX
タグに渡されます。このアプローチでは、送信ページは、受信ページを起動する前に1つ以上の索引を収集し、同じ項目リストから多数の項目を同時に記録できるという、少なくとも1つの利点があります。
前に要約したように、selectFromHotPicks
、getRecommendations
、getCrossSellRecommendations
およびevaluateItems
タグは、すべて項目の配列を戻します。次の項では、戻されるリコメンデーションを詳細に作成するのに使用するチューニングおよびフィルタ処理設定について説明します。また、リコメンデーションのソート設定に関する情報もあります。ただし、項目の出力は常に一連の項目の入力からなので、フィルタ処理設定は、evaluateItems
タグには適用されません。
複数のチューニング設定によって、戻されるリコメンデーション内でリコメンデーション・エンジンによって使用されるいくつかの条件および論理が決定されます。各設定には値が必要であり、ここで説明する方法の1つで決定されます。
これらの設定は、表10-1のサマリーで示すように、selectFromHotPicks
、getRecommendations
、getCrossSellRecommendations
およびevaluateItems
タグのtuning
XXX
属性により指定できます。または、tuningName
属性を使用して、アプリケーション・レベルのpersonalization.xml
ファイル(優先)か、サーバー全体のpersonalization.xml
ファイルのいずれかの中の、指定した<Tuning>
要素から設定を取得できます。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
属性設定がなく、<Tuning>
要素もない場合、次のステップの順にデフォルト値が選択されます。
personalization.xml
ファイル内の<DefaultTuning>
要素に準拠します。
personalization.xml
ファイル内の<DefaultTuning>
要素に準拠します。
tuningDataSource="ALL" tuningInterestDimension="NAVIGATION" tuningPersonalizationIndex="MEDIUM" tuningProfileDataBalance="BALANCED" tuningProfileUsage="INCLUDE"
詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。
チューニング設定に加え、リコメンデーション・リクエストに指定可能なフィルタ処理設定があります。各設定には値が必要であり、ここで説明する方法の1つで決定されます。
これらの設定は、getRecommendations
、getCrossSellRecommendations
およびselectFromHotPicks
タグのfiltering
XXX
属性により指定できます。(フィルタ処理は、evaluateItems
タグには関係ありません。)または、filteringName
属性を使用して、アプリケーション・レベルのpersonalization.xml
ファイル(優先)か、サーバー全体のpersonalization.xml
ファイルのいずれかの中の、指定した<Filtering>
要素から設定を取得できます。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
属性設定も<Filtering>
要素も存在しない場合、デフォルト値はアプリケーション・レベルのpersonalization.xml
ファイル(優先)か、サーバー全体のpersonalization.xml
ファイルのいずれかの中の、<DefaultFiltering>
要素から選択されます。
これらは、フィルタ処理用パラメータです。
filteringTaxonomyID
: OracleAS Personalization環境において、整数が項目分類のIDである場合、これは、整数を示すJava文字列です。
filteringMethod
: これは、ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
、SUBTREE_ITEMS
、ALL_CATEGORIES
、INCLUDE_CATEGORIES
、EXCLUDE_CATEGORIES
、SUBTREE_CATEGORIES
およびCATEGORY_LEVEL
のいずれかです。表10-2に意味のサマリーを示します。常に、これらのメソッドは、filteringTaxonomyID
値により指定される分類に適用されます。getCrossSellRecommendations
タグの場合は、ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
およびSUBTREE_ITEMS
設定のみがサポートされています。
filteringCategories
: これは、各IDの後ろを単一のプラス記号(+)で区切った整数IDのJava文字列で、特定の分類内にある既存の項目カテゴリを識別します。カテゴリは、マイニング・テーブル・リポジトリのMTR.MTR_CATEGORY
表で指定されます。
表10-2 リコメンデーションのリクエスト用のフィルタ処理メソッド
すべてのXXX
_CATEGORIES
設定について、リコメンデーションは、映画のタイトルなどの特定の項目ではなく「ドラマ」など、カテゴリの形式で戻されます。この場合、項目タイプはCategory
で、先に、マイニング・テーブル・リポジトリでカテゴリが定義されている必要があります。
詳細は、『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
レーティングまたはランキングのいずれかの各項目のprediction
フィールドに従って、戻された項目をソートできます。このフィールドを使用する方法の詳細は、「レーティングとランキング」を参照してください。
selectFromHotPicks
、getRecommendations
、getCrossSellRecommendations
またはevaluateItems
タグのsortOrder
属性を使用して、ASCEND
、DESCEND
あるいはNONE
(デフォルト)のソート順序を指定します。昇順は、最も一致するものを最初に表示し、降順はその逆です。5段階にランキングされた項目の昇順は、1が最高なので、1、2、3、4、5の順になります。また、5段階にレーティングされた項目の昇順は、最も大きな数字が最高のレーティングを意味するので、4.5、3.9、2.5、2.2、1.8の順になります。
次の項では、OracleAS PersonalizationタグおよびItem
publicクラスの構文の詳細ならびに使用例を示した後、最後にタグの制限事項について説明します。
OracleAS Personalizationタグ・ライブラリを使用する場合は、次の要件に注意してください。
ojsputil.jar
ファイルがインストール済で、クラスパスに存在していることを確認してください。このファイルは、OC4Jに同梱されていて、予約済のタグ・ライブラリ・ディレクトリにあります。
oreapi-rt.jar
ファイルにあるリコメンデーション・エンジンAPIのクラスが必要となります。Business Intelligenceオプションを指定してOracle Application Serverをインストールした場合、このファイルは、[SRCHOME]/dmt/jlib
ディレクトリ内にインストールされます。このファイルを、アプリケーションによるアクセスが可能な場所にコピーします。
personalization.tld
が、アプリケーションで使用可能である必要があります。また、ライブラリを使用するJSPページには、適切なtaglib
ディレクティブが存在する必要があります。Oracle Application Serverのインストール時、TLDはojsputil.jar
に配置されます。personalization.tld
のuri
値は次のとおりです。
http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/personalization.tld
taglib
ディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri
値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。
注意
|
ここで説明しているタグ属性の中には、使用する場合にOracleAS Personalizationおよびリコメンデーション・エンジンの実装に関する一般的な知識を必要とするものがあります。詳細は、『Oracle Application Server Personalization管理者ガイド』または『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
次の項では、リコメンデーション・エンジン・セッションの開始、終了および管理用のタグについて説明します。
この項では、リコメンデーション・エンジン・セッションの開始に使用するstartRESession
タグの構文および属性について説明します。関連情報は、「リコメンデーション・エンジン・セッションの管理」を参照してください。
startRESession
タグは、同じリコメンデーション・エンジン・セッション内で実行するその他のOracleAS Personalizationタグの前に実行される必要があります。
<op:startRESession REName = "recommendation_engine_connection_name" [ REURL = "rec_engine_database_connection_URL" ] [ RESchema = "rec_engine_schema_name" ] [ REPassword = "rec_engine_schema_password" ] [ RECacheSize = "kilobytes_of_cache" ] [ REFlushInterval = "milliseconds_to_flush" ] [ session = "true" | "false" ] [ userType = "visitor" | "customer" ] [ UserID = "user_ID_for_site_login" ] [ storeUserIDIn = "variable_name" ] [ disableRecording = "true" | "false" ] />
startRESession
タグには、ボディはありません。
属性の説明に続く、「属性の使用方法」も参照してください。
REName
(必須): リコメンデーション・エンジン・ファーム内のリコメンデーション・エンジンの接続名を指定するのに使用します。一部の状況においては、「属性の使用方法」で説明しているように、設定を取得するためにpersonalization.xml
内の<RE>
要素の名前も一致させる必要があります。関連情報は、「パーソナライズ・タグ・ライブラリ構成ファイル」を参照してください。
REURL
:リコメンデーション・エンジン・データベースのJDBC接続文字列です。
RESchema
: リコメンデーション・エンジン・データベース・スキーマの名前です。
REPassword
: RESchema
の名前に対応するパスワードです。 OC4Jのjazn-data.xml
ファイルに、リコメンデーション・エンジン・データベース内の、たとえばscott
というアカウント用の<user>
要素が含まれている場合は、次のように特殊な右矢印構文でダッシュ(-
)と右山カッコ(>
)に続けてこのアカウント名を指定することにより、そのファイルから不明瞭化されていないパスワードを取得できます。
password="->scott"
RECacheSize
: リコメンデーション・セッション・キャッシュのサイズをKBで指定するのに使用します。デフォルトは3234KBです。これは、「属性の使用方法」で説明しているように、REFlushInterval
に合せて調整する必要があります。
REFlushInterval
: リコメンデーション・エンジン・セッション・キャッシュ内のデータがリコメンデーション・エンジン・スキーマにフラッシュされる頻度を指定するのに使用します。単位はミリ秒で、デフォルトは60000(1分)です。これは、「属性の使用方法」で説明しているように、RECacheSize
に合せて調整する必要があります。
session
: 「true
」設定(デフォルト)を指定してHTTPセッション・オブジェクトを使用し、OracleAS Personalization JSPページがステートフル形式で動作するように指定します。かわりにCookieを使用し、ページがステートレス形式で動作するように指定する場合は、「false
」設定を使用します。
userType
: Webサイト・ユーザーが匿名のビジター
(デフォルト)または登録済のカスタマ
のいずれであるかを示します。
userID
: Webサイト・ユーザーのユーザー名です。匿名のビジターなど、名前がない場合、タグ・ハンドラによりIDが自動的に生成されます。
storeUserIDIn
: 後で使用するために、userID
値を格納する場合、storeUserIDIn
によって、格納先のTEI String
変数の名前を指定できます。この属性は、自動生成されるユーザーIDの場合に便利です。
disableRecording
: 「true
」設定を使用して、record
XXX
タグの任意のアクションを無効にします。これにより、たとえば、Webサイトで、ユーザーが自身のアクティビティを記録しないように指定するなどの操作が可能になります。また、ピーク時間中のサイトのパフォーマンスを向上させます。たとえば、現在のユーザーIDを基にして、この属性をリクエスト時に設定できます。これによって、JSPコードを変更することなく、適切なユーザーのみ、または適切な時間に限って記録を無効に設定できます。デフォルト設定は「false
」です。
startRESession
タグが機能するには、REName
属性が必要で、さらに、タグ属性またはpersonalization.xml
ファイルの1つを使用して、REURL
、RESchema
およびREPassword
を定義する必要があります。(「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。)
REName
は、リコメンデーション・エンジン・ファーム内のリコメンデーション・エンジンの接続名を指定します。効率を上げるため、複数のユーザー・セッションで同じ接続をできるだけ共有します。これには、同じ接続を使用するときは常に同じREName
を使用します。リコメンデーション・エンジンの接続は、確立されると、REName
値をキーとして使用してキャッシュされます。 REURL
、RESchema
またはREPassword
は、最初に接続を確立するstartRESession
タグの属性によって設定されず、これら3つの設定は、すべて、Name
属性がstartRESession
タグのREName
値と一致する<RE>
要素を含んだpersonalization.xml
ファイルから取得される必要があります。このとき、デフォルト値以外の値を使用する場合、RECacheSize
およびREFlushInterval
も<RE>
要素で設定する必要があります。この例では、アプリケーション全体のpersonalization.xml
が最初に検索され、サーバー全体のpersonalization.xml
は、アプリケーション全体のファイルにREName
値を名前として持つ<RE>
要素が含まれない場合にのみ検索されます。
REName
属性を<RE>
要素とともに使用して、ファーム内のリコメンデーション・エンジン間のロード・バランシングを簡易化できます。各<RE>
要素は、ファーム内の異なるリコメンデーション・エンジンを指します。JSPページは、複数のロード・バランシング機能に基づいて、異なるstartRESession
タグのREName
属性に別の値を割り当てることで、ファーム内の異なるリコメンデーション・エンジン間を移動できます。
RECacheSize
およびREFlushInterval
に指定されていますが、これらは、作業開始のためだけに用意されたものです。アプリケーションの実行に慣れたら、Webサイトの状況に応じて、これらの値をチューニングできます。RECacheSize
およびREFlushInterval
の設定は、相互に関連しており、また、ユーザー操作の結果としてリコメンデーション・エンジン・セッション・キャッシュに項目が追加される速度の見積りによって異なります。デフォルトのキャッシュ・サイズは最大3234KBで、これは約4800項目の格納に十分なサイズです。デフォルトのフラッシュ間隔は60秒(60000ミリ秒)で、毎秒80項目のキャッシュ受信率が得られます。フラッシュ間隔を120秒に延長すると、新しい項目を毎秒40個しか追加できません。これに対し、フラッシュ間隔を30秒に短縮すると、キャッシュ受信率は毎秒160項目になります。ただし、フラッシュ間隔を短縮する不利な点は、フラッシュされた後に項目を削除すると(remove
XXX
Record
タグを使用して)、データベースのラウンドトリップが必要となることです。同じJVM内の同じリコメンデーション・エンジンの接続を共有するすべてのセッションは、同じセッション・キャッシュも共有する点に注意してください。キャッシュの受信率は、このようなすべてのセッションの累積です。
次の例は、リコメンデーション・エンジン・データベースのURLおよびユーザー名のscott
を確立し、OC4J jazn-data.xml
ファイルからscott
アカウントの不明瞭化されていないパスワードを取得するstartRESession
タグを示します。これは、jazn-data.xml
にscott
のエントリがあることを前提とします。
<op:startRESession REName = "RE1" REURL = "@jdbc:oracle:thin:@sid" RESchema = "scott" REPassword = "->scott" />
このタグを使用して、ステートフル・アプリケーションのリコメンデーション・エンジン・セッションを明示的に終了します。通常、これはオプションですが、一部の状況では必要とされます。(詳細は、「リコメンデーション・エンジン・セッションの終了」を参照してください。)アプリケーション・ロジックで、リコメンデーション・エンジン・セッションを今後必要としないと判断される場合も、ステートフル・アプリケーションでこのタグを使用することをお薦めします。これにより、不必要なリソースが解放されます。
endRESession
を使用しない状況では、次の動作に注意してください。
startRESession
タグのsession
属性を「true
」に設定してリコメンデーション・エンジン・セッションを開始した場合、このリコメンデーション・エンジン・セッションは、HTTPセッションの終了時に暗黙的に終了します。
session
を「false
」に設定してリコメンデーション・エンジン・セッションを開始した場合は、リコメンデーション・エンジン・セッションは、十分な時間、非アクティブとなった後、タイムアウトされます。タイムアウトの間隔は、リコメンデーション・エンジン・スキーマの構成パラメータとして指定されます。endRESession
タグの影響はありません。
<op:endRESession />
endRESession
タグには、属性もボディもありません。
匿名のビジターが、登録済のカスタマ・アカウントを作成する場合に、このタグを使用します。このタグを実行するとき、既存のリコメンデーション・エンジン・セッションがビジターのセッションからカスタマのセッションに変換されます。このセッションで以前に収集されたデータは保存されます。このタグは、実際には新規のカスタマを作成せず、また、新規ログインを実行しません。継続中のリコメンデーション・エンジン・セッションを変換するのみです。
customerID
は、リクエスト時の属性で、アプリケーションによって提供される必要があります。
<op:setVisitorToCustomer customerID = "<%=registered_customer_name%>" />
setVisitorToCustomer
タグには、ボディはありません。
次の項で、リコメンデーション・タグ、評価タグおよび関連サブタグの詳細を説明します。
次のタグが対象です。
「リコメンデーションおよび評価タグの概要」も参照してください。
このタグを使用して、購入、ナビゲーションまたはレーティングに関する一連のリコメンデーションをリクエストします。特定の分類からの項目が、指定したチューニングおよびフィルタ処理を使用して考慮されます。リコメンデーションは、次のタイプの配列で戻されます。
oracle.jsp.webutil.personalization.Item[]
getCrossSellRecommendations
およびevaluateItems
などの他のタグでは、リコメンデーションの基礎として使用するために項目を入力する必要があるのに対し、getRecommendations
タグではその必要はありません。リコメンデーションは、特定の項目ではなく、ユーザーのIDおよびプロファイル(ユーザー・セッションおよび履歴データ)に基づきます。
生成されるリコメンデーションは、オプションで、タグのstoreResultsIn
属性で変数名を指定して、Item[]
タイプのTEI変数内に格納できます。リコメンデーションは、getRecommendations
タグ内でも暗黙的に取得可能です。オプションで、希望する項目の処理にgetNextItem
タグがネストされたタグ・ボディを使用できます。「getNextItemパーソナライズ・タグ」を参照してください。
<op:getRecommendations [ from = "top" | "bottom" ] [ fromHotPicksGroups = "string_of_Hot_Picks_group_numbers" ] [ storeResultsIn = "TEI_variable_name" ] [ storeInterestDimensionIn = "TEI_variable_name" ] [ maxQuantity = "integer_value" ] [ tuningName = "name_from_config_file_Tuning_element" ] [ tuningDataSource = "ALL"|"NAVIGATION"|"PURCHASE"|"RATING"|"DEMOGRAPHIC" ] [ tuningInterestDimension = "NAVIGATION"|"PURCHASING"|"RATING" ] [ tuningPersonalizationIndex = "LOW"|"MEDIUM"|"HIGH" ] [ tuningProfileDataBalance = "HISTORY"|"CURRENT"|"BALANCED" ] [ tuningProfileUsage = "INCLUDE"|"EXCLUDE" ] [ filteringName = "name_from_config_file_Filtering_element" ] [ filteringTaxonomyID = "integer_value" ] [ filteringMethod = "ALL_ITEMS"|"EXCLUDE_ITEMS"|"INCLUDE_ITEMS"| "SUBTREE_ITEMS"|"ALL_CATEGORIES"|"INCLUDE_CATEGORIES"| "EXCLUDE_CATEGORIES"|"SUBTREE_CATEGORIES"|CATEGORY_LEVEL" ] [ filteringCategories = "string_of_integers" ] [ sortOrder = "ASCEND"|"DESCEND"|"NONE" ] > ... </op:getRecommendations>
属性の説明に続く、「属性の使用方法」も参照してください。
from
: 項目をその分類全体から選択する場合に使用します。デフォルトで通常の設定であるtop
設定は、最も希望に合う項目をN個以下(Nは表示するリコメンデーションの最大数)表示します(maxQuantity
)。bottom
設定は、最も希望に合わない項目をN個以下表示します。これは、たとえば、製品管理部門が最もカスタマの人気が少ない項目を把握する場合などに便利です。
fromHotPicksGroups
: 項目を1つ以上のホット・ピックス・グループから選択する場合に使用します。アプリケーションは、startRESession
タグで指定されたものと同じリコメンデーション・エンジンから一連のホット・ピックス・グループのID番号を決定する必要があります。fromHotPicksGroups
属性で、「10+20+30
」というように、グループのID番号をプラス記号(+)で区切って1つの文字列にリストしてください。
storeResultsIn
: オプションで、生成されるリコメンデーションが格納されるItem[]
タイプのTEI変数の名前を指定します。(これは、getCrossSellRecommendations
の属性には必要ですが、getRecommendations
には必要ありません。)変数名を指定すると、この変数のスコープはAT_BEGIN
となり、開始タグからページの終わりまで使用できるようになります。値は、JSP式ではなく、変数名であることに注意してください。変換には変数名を指定する必要があり、これは、リクエスト時属性ではありません。
storeInterestDimensionIn
: オプションで、NAVIGATION
、PURCHASING
またはRATING
のいずれかのインタレスト・ディメンションを格納するためのTEI文字列変数の名前を指定します。比較には、Item
クラス定義済定数であるINT_DIM_NAVIGATION
、INT_DIM_PURCHASING
またはINT_DIM_RATING
を使用します。変数名を指定すると、この変数のスコープはAT_BEGIN
となり、開始タグからページの終わりまで使用できるようになります。変換には変数名を指定する必要があり、これは、リクエスト時属性ではありません。戻される値は、タグで使用されるtuningInterestDimension
設定と同じになります。
maxQuantity
: 戻されるリコメンデーションの最大数を指定するのに使用します。アプリケーションのpersonalization.xml
ファイル、またはサーバー全体のpersonalizaton.xml
ファイルの<RecommendationSettings>
要素で一般的なデフォルト設定が指定されている場合、これはオプションです。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
tuningName
: チューニング設定が取得されるように、personalization.xml
の<Tuning>
要素の名前を指定するのに使用します。または、個別のtuning
XXX
属性を使用します。
tuningDataSource
: 「チューニング設定」を参照してください。
tuningInterestDimension
: 「チューニング設定」を参照してください。
tuningPersonalizationIndex
: 「チューニング設定」を参照してください。
tuningProfileDataBalance
: 「チューニング設定」を参照してください。
tuningProfileUsage
: 「チューニング設定」を参照してください。
filteringName
: フィルタ処理設定が取得されるように、personalization.xml
の<Filtering>
要素の名前を指定するのに使用します。または、個別のfiltering
XXX
属性を使用します。
filteringTaxonomyID
: 「リコメンデーションのフィルタ処理」を参照してください。
filteringMethod
: 「リコメンデーションのフィルタ処理」を参照してください。
filteringCategories
: 「リコメンデーションのフィルタ処理」を参照してください。文字列内の整数は、「101+200+35
」というように、プラス記号(+)で区切ります。
sortOrder
: 項目のソートを昇順(ASCEND
、最も一致するものを一番上に表示)または降順(DESCEND
)に指定するのに使用します。デフォルトは、いずれでもなく(NONE
)、ソート要件はありません。詳細は、「ソート順序」を参照してください。
from
またはfromHotPicksGroups
のいずれかを指定する必要があります。
storeResultsIn
属性、またはgetNextItem
タグがネストされたタグ・ボディのいずれか、あるいは両方(オプション)を使用して出力項目にアクセスします。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、または、tuning
XXX
属性を使用して個別のチューニング設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「チューニング設定」を参照してください。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、または、filtering
XXX
属性を使用して個別のフィルタ処理設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「リコメンデーションのフィルタ処理」を参照してください。
filteringMethods
が、ALL_ITEMS
またはALL_CATEGORIES
に設定されていないかぎり、filteringCategories
設定が必要です。これらの設定は、タグ属性またはpersonalization.xml
を使用して実行できます。
XXX
_CATEGORIES
フィルタ処理メソッドによりカテゴリが戻されます。
次は、getRecommendations
タグの基本的な使用例です。storeResultsIn
属性は、受信および表示する結果のItem[]
配列を定義します。
<op:getRecommendations storeResultsIn="myRecs"> <% for(int i = 0; i< myRecs.length; i++) { Render(myRecs(i).getType(),myRecs(i).getID()); } %> </op:getRecommendations>
ネストされたgetNextItem
タグを使用するgetRecommendations
タグの例について、「getNextItemパーソナライズ・タグ」も参照してください。
getRecommendations
タグと同様、getCrossSellRecommendations
タグは、購入、ナビゲーションまたはレーティングに対する一連のリコメンデーションをItem[]
タイプの配列で戻します。特定の分類からの項目が、指定したチューニングおよびフィルタ処理を使用して考慮されます。
ただし、getCrossSellRecommendations
を使用するには、生成されるリコメンデーションの基礎として使用される、ユーザーが過去に関心を示した一連の購入項目またはナビゲーション項目を入力する必要があります。項目は、すべて同じ分類に属する必要があります。
項目は、指定した項目配列、またはforItem
タグがネストされたボディ・タグを使用して入力できます。詳細は、「入力項目の仕様」を参照してください。「forItemパーソナライズ・タグ」も参照してください。
getCrossSellRecommendations
タグからのリコメンデーションは、タグのstoreResultsIn
属性で指定される変数名を持つ、Item[]
タイプのTEI変数内に格納されます。
<op:getCrossSellRecommendations storeResultsIn = "TEI_variable_name" [ storeInterestDimensionIn = "TEI_variable_name" ] [ fromHotPicksGroups = "string_of_Hot_Picks_group_numbers" ] [ inputItemList = "item_array_expression" ] [ maxQuantity = "integer_value" ] [ tuningName = "name_from_config_file_Tuning_element" ] [ tuningDataSource = "ALL"|"NAVIGATION"|"PURCHASE"|"RATING"|"DEMOGRAPHIC" ] [ tuningInterestDimension = "NAVIGATION"|"PURCHASING"|"RATING" ] [ tuningPersonalizationIndex = "LOW"|"MEDIUM"|"HIGH" ] [ tuningProfileDataBalance = "HISTORY"|"CURRENT"|"BALANCED" ] [ tuningProfileUsage = "INCLUDE"|"EXCLUDE" ] [ filteringName = "name_from_config_file_Filtering_element" ] [ filteringTaxonomyID = "integer_value" ] [ filteringMethod = "ALL_ITEMS"|"EXCLUDE_ITEMS"|"INCLUDE_ITEMS"| "SUBTREE_ITEMS" ] [ filteringCategories = "string_of_integers" ] [ sortOrder = "ASCEND"|"DESCEND"|"NONE" ] > ... </op:getCrossSellRecommendations>
属性の説明に続く、「属性の使用方法」も参照してください。
inputItemList
: Item[]
によって入力項目を指定する場合は、配列を戻すJSP式とともにこの属性を使用します。式内の項目配列は、前のリコメンデーション・タグから取得されます。詳細は、「項目配列の入力」を参照してください。
「getRecommendationsパーソナライズ・タグ」で説明しているように、「属性の使用方法」で説明されている制限事項以外、またgetCrossSellRecommendations
タグにはstoreResultsIn
属性が必要な点以外は、getRecommendations
タグにはgetCrossSellRecommendations
タグのその他すべての属性が使用されます。
チューニング、フィルタ処理およびソートの詳細は、「チューニング設定」、「リコメンデーションのフィルタ処理」および「ソート順序」を参照してください。
inputItemList
属性、またはforItem
タグがネストされたボディ、あるいはその両方(オプション)が必要です。両方の機能を使用する場合は、最初にforItem
タグが実行され、示された項目が項目リスト内に配置されます。次に、inputItemList
エントリが考慮され、リストに追加されます。
getRecommendations
タグとは異なり、storeResultsIn
は、getCrossSellRecommendations
タグの必須属性です。生成されるリコメンデーションを格納するため、Item[]
タイプのTEI変数の名前を指定する必要があります。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、または、tuning
XXX
属性を使用して個別のチューニング設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「チューニング設定」を参照してください。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
tuningInterestDimension
設定がtuningDataSource
設定と異なる場合、OracleAS Personalizationの規則の設定によって、いずれのリコメンデーションも取得されない場合があります。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、または、filtering
XXX
属性を使用して個別のフィルタ処理設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「リコメンデーションのフィルタ処理」を参照してください。
filteringMethods
が、ALL_ITEMS
に設定されていないかぎり、filteringCategories
設定が必要です。これらの設定は、タグ属性またはpersonalization.xml
を使用して実行できます。
getCrossSellRecommendations
タグでは、カテゴリ・ベースのフィルタ処理は使用できないため、ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
およびSUBTREE_ITEMS
という、一部のフィルタ処理メソッドのみがサポートされています。
次の例では、getCrossSellRecommendations
タグを使用して、過去において特定のDVDをレンタルまたは購入したユーザーに、他のDVDを提案します。
<% long[] ids = ApplicationPackage.getUserHistory("Smith01"); Item[] DVDs = new Item[ids.length]; for(int i=0; i<ids.length; i++) { DVDs[i] = new Item("DVD", ids[i] ); } pageContext.setAttribute("pastInterest", DVDs); %> <op: getCrossSellRecommendations inputItemList="pastInterest" storeResultsIn="moreDVDs" maxQuantity = "4" sortOrder="ASCEND" /> <!-- display 4 best cross-sell items --> <h1> You will also enjoy these titles! </h1> ApplicationSupport.displayItem(moreDVDs[1].getType(), moreDVDs[1].getID() ); ApplicationSupport.displayItem(moreDVDs[2].getType(), moreDVDs[2].getID() ); ApplicationSupport.displayItem(moreDVDs[3].getType(), moreDVDs[3].getID() ); ApplicationSupport.displayItem(moreDVDs[4].getType(), moreDVDs[4].getID() );
ネストされたforItem
タグを使用するgetCrossSellRecommendations
タグの例について、「forItemパーソナライズ・タグ」も参照してください。
このタグを使用して、分類全体からではなく、また、ユーザー・プロファイルを考慮せずに、一連のホット・ピックス・グループからのリコメンデーションをリクエストします。指定したグループの項目に対し、チューニングおよびフィルタ処理も適用できます。
selectFromHotPicks
は、ユーザーのIDおよびプロファイルを考慮しないことを除き、fromHotPicksGroups
設定が指定されたgetRecommendations
タグと基本的には同様に機能します。このタグの詳細は、「getRecommendationsパーソナライズ・タグ」を参照してください。
オプションで、タグのstoreResultsIn
属性で変数名を指定して、生成されるリコメンデーションをItem[]
タイプのTEI変数内に格納できます。リコメンデーションは、selectFromHotPicks
タグ内でも暗黙的に取得可能です。オプションで、希望する項目の処理にgetNextItem
タグがネストされたタグ・ボディを使用できます。「getNextItemパーソナライズ・タグ」を参照してください。
<op:selectFromHotPicks hotPicksGroups = "string_of_Hot_Picks_group_numbers" [ storeResultsIn = "TEI_variable_name" ] [ storeInterestDimensionIn = "TEI_variable_name" ] [ maxQuantity = "integer_value" ] [ tuningName = "name_from_config_file_Tuning_element" ] [ tuningDataSource = "ALL"|"NAVIGATION"|"PURCHASE"|"RATING"|"DEMOGRAPHIC" ] [ tuningInterestDimension = "NAVIGATION"|"PURCHASING"|"RATING" ] [ tuningPersonalizationIndex = "LOW"|"MEDIUM"|"HIGH" ] [ tuningProfileDataBalance = "HISTORY"|"CURRENT"|"BALANCED" ] [ tuningProfileUsage = "INCLUDE"|"EXCLUDE" ] [ filteringName = "name_from_config_file_Filtering_element" ] [ filteringTaxonomyID = "integer_value" ] [ filteringMethod = "ALL_ITEMS"|"EXCLUDE_ITEMS"|"INCLUDE_ITEMS"| "SUBTREE_ITEMS"|"ALL_CATEGORIES"|"INCLUDE_CATEGORIES"| "EXCLUDE_CATEGORIES"|"SUBTREE_CATEGORIES"|CATEGORY_LEVEL" ] [ filteringCategories = "string_of_integers" ] [ sortOrder = "ASCEND"|"DESCEND"|"NONE" ] > ... </op:selectFromHotPicks>
属性の説明に続く、「属性の使用方法」も参照してください。
hotPicksGroups
(必須): リコメンデーションの選択元のホット・ピックス・グループを1つ以上指定するには、これを使用する必要があります。アプリケーションは、startRESession
タグで指定されたものと同じリコメンデーション・エンジンから1つ以上のホット・ピックス・グループのID番号を決定する必要があります。hotPicksGroups
属性で、「1+20+35
」というように、グループのID番号をプラス記号(+)で区切って1つの文字列にリストしてください。
「getRecommendationsパーソナライズ・タグ」で説明しているように、getRecommendations
タグには、「属性の使用方法」で説明する制限事項以外、その他の属性をすべて使用します。
チューニング、フィルタ処理およびソートの詳細は、「チューニング設定」、「リコメンデーションのフィルタ処理」および「ソート順序」を参照してください。
ネストされたgetNextItem
タグを使用するselectFromHotPicks
タグの例については、「getNextItemパーソナライズ・タグ」を参照してください。
hotPicksGroups
属性は、getRecommendations
タグのfromHotPicksGroups
属性と同等ですが、hotPicksGroups
は必須です。
storeResultsIn
属性、またはgetNextItem
タグがネストされたタグ・ボディのいずれか、あるいは両方(オプション)を使用して出力項目にアクセスします。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、または、tuning
XXX
属性を使用して個別のチューニング設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「チューニング設定」を参照してください。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、または、filtering
XXX
属性を使用して個別のフィルタ処理設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「リコメンデーションのフィルタ処理」を参照してください。
filteringMethods
が、ALL_ITEMS
またはALL_CATEGORIES
に設定されていないかぎり、filteringCategories
設定が必要です。これらの設定は、タグ属性またはpersonalization.xml
を使用して実行できます。
XXX
_CATEGORIES
フィルタ処理メソッドによりカテゴリが戻されます。
evaluateItems
タグを使用して、タグに入力される一連の項目を評価します。項目は、すべて同じ分類に属する必要があります。PURCHASING
またはNAVIGATION
のインタレスト・ディメンションの場合、項目にはランキングが付けられます。RATING
のインタレスト・ディメンションの場合、項目にはレーティングが付けられます。評価された項目のサブセット(tuningDataSource
設定の影響によって、項目を含まない場合から、すべての項目を含む場合まで)が、Item[]
タイプのTEI配列変数で戻されます。storeResultsIn
属性で変数名を指定する必要があります。配列内の各項目で、prediction
属性にランキングまたはレーティング値が含まれます。
項目のレーティングおよびランキングに関するバックグラウンド情報の詳細は、「レーティングとランキング」を参照してください。
項目は、指定した項目配列、またはforItem
タグがネストされたボディ・タグを使用して入力できます。詳細は、「入力項目の仕様」を参照してください。「forItemパーソナライズ・タグ」も参照してください。
<op:evaluateItems storeResultsIn = "TEI_variable_name" taxonomyID = "integer_value" [ inputItemList = "item_array_expression" ] [ tuningName = "name_from_config_file_Tuning_element" ] [ tuningDataSource = "ALL"|"NAVIGATION"|"PURCHASE"|"RATING"|"DEMOGRAPHIC" ] [ tuningInterestDimension = "NAVIGATION"|"PURCHASING"|"RATING" ] [ tuningPersonalizationIndex = "LOW"|"MEDIUM"|"HIGH" ] [ tuningProfileDataBalance = "HISTORY"|"CURRENT"|"BALANCED" ] [ tuningProfileUsage = "INCLUDE"|"EXCLUDE" ] [ sortOrder = "ASCEND"|"DESCEND"|"NONE" ] > ... </op:evaluateItems>
属性の説明に続く、「属性の使用方法」も参照してください。
taxonomyID
(必須): 項目の取得元である分類のIDを指定する整数です。
inputItemList
: Item[]
によって入力項目を指定する場合は、配列を戻すJSP式とともにこの属性を使用します。式内の項目配列は、前のリコメンデーション・タグから取得されます。詳細は、「項目配列の入力」を参照してください。
「getRecommendationsパーソナライズ・タグ」で説明しているように、「属性の使用方法」で説明されている制限事項以外、またevaluateItems
タグにはstoreResultsIn
属性が必要な点以外は、getRecommendations
タグにはevaluateItems
のその他すべての属性を使用します。
チューニングおよびソートの詳細は、「チューニング設定」および「ソート順序」を参照してください。
inputItemList
属性、またはforItem
タグがネストされたボディ、あるいはその両方(オプション)が必要です。両方の機能を使用する場合は、最初にforItem
タグが実行され、示された項目が項目リスト内に配置されます。次に、inputItemList
エントリが考慮され、リストに追加されます。
getRecommendations
タグとは異なり、storeResultsIn
は、evaluateItems
タグの必須属性です。レーティングされた項目を格納するため、Item[]
タイプのTEI変数の名前を指定する必要があります。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、または、tuning
XXX
属性を使用して個別のチューニング設定を指定します。どちらも指定しない場合、デフォルト値を選択する方法の詳細は、「チューニング設定」を参照してください。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。
evaluateItems
タグには、いずれのフィルタ処理属性も存在しません。したがって、別の属性であるtaxonomyID
を使用して分類を指定する必要があります。
この例では、販売項目を入力として取得し、evaluateItems
タグを使用してユーザーの関心度の高い順に並べ、最も高いものを表示します。
<% Item[] saleItems = ApplicationSupport.getSaleItems(); %> <!-- Choose the sale items of greatest interest to this user --> <op:evaluateItems storeResultsIn="bestItems" taxonomyID="1" inputItemList="<%=saleItems%>" /> <% ApplicationSupport.displayItem(bestItems(1)); %>
このタグを使用して、getCrossSellRecommendations
タグまたはevaluateItems
タグの入力となる各項目を指定します。
forItem
タグの使用方法の概要は、「入力項目の仕様」を参照してください。
<op:forItem [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] [ type = "type_of_item" ] [ ID = "item_ID_number" ] />
forItem
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
itemList
: Item[]
配列を戻すJSP式を使用します。式内の項目配列は、前のリコメンデーション・タグから取得されます。この属性は、希望する要素配列を指定するindex
とともに使用します。type
およびID
を使用する場合は、この属性を使用しないでください。詳細は、「項目配列の入力」を参照してください。
index
: 希望する項目配列の要素の索引番号を指定するのに使用します。itemList
属性で項目配列を指定します。type
およびID
を使用する場合は、この属性を使用しないでください。
type
: たとえば「靴」など、項目タイプを指定します。この属性は、ID
とともに使用します。index
およびitemList
を使用する場合は、この属性を使用しないでください。
ID
: 指定したタイプの各項目に一意の識別番号です。この属性は、type
とともに使用します。index
およびitemList
を使用する場合は、この属性を使用しないでください。
次の例は、指定された複数の靴の購入項目を抱合せ販売のリコメンデーション用の入力として使用し、生成されたリコメンデーションを表示します。
<op: getCrossSellRecommendations storeResultsIn="shoeItems" > <op:forItem type="shoes" ID="20" /> <op:forItem type="shoes" ID="26" /> <op:forItem type="shoes" ID="45" /> <op:forItem type="shoes" ID="93" /> <op:forItem type="shoes" ID="101" /> </op:getCrossSellRecommendations> <p> Based on past shoe purchases, here are the shoes we recommend! </p> <%= ApplicationSupport.displayItemArray(shoeItems) %>
オプションで、getRecommendations
内またはselectFromHotPicks
タグ・ボディにネストされたgetNextItem
タグを使用して、出力タグによって戻されるリコメンデーションにアクセスできます。(あるいは、getRecommendations
またはselectFromHotPicks
タグのstoreResultsIn
属性を使用してもこの項目にアクセスできます。)
getNextItem
タグが初めて実行されると最初の項目にアクセスし、その後、項目配列内をとおしてgetNextItem
が引き続き1つずつ実行され、次の項目が取得されます。項目配列の最後に達すると、タグは各タグ属性にnull値を与えます。
タグ属性を使用して、次の項目のタイプおよびID、またはItem
インスタンス自体のいずれかを格納します。
次の点に注意してください。
storeResultsIn
属性を使用して、getRecommendations
またはselectFromHotPicks
タグからの明示的な項目配列を使用しても、getNextItem
タグの使用は制限されません。storeResultsIn
を使用してアクセス可能な項目配列は、getNextItem
タグを使用した処理には影響されません。
getRecommendations
内にネストされた1つ以上のgetRecommendations
タグ、または、他のselectFromHotPicks
タグ内の1つ以上のselectFromHotPicks
タグを使用する場合、これらのタグのうち1つのみが、ネストされたgetNextItem
タグを使用して、生成されるタグに暗黙的にアクセスできます。ネスト・チェーン内の他のタグは、storeResultsIn
属性を使用する必要があります。selectFromHotPicks
タグ内のgetRecommendations
タグ、またはgetRecommendations
タグ内のselectFromHotPicks
タグについては、そのような制限事項は存在しません。
<op:getNextItem [ storeTypeIn = "TEI_variable_for_item_type" ] [ storeIDIn = "TEI_variable_for_item_ID" ] [ storeItemIn = "TEI_variable_for_Item_instance" ] />
getNextItem
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
属性の説明に続く、「属性の使用方法」も参照してください。
storeTypeIn
: TEI String
変数名を指定して、次の項目のタイプを格納します。storeItemIn
を使用する場合以外は、これをstoreIDIn
とともに使用します。
storeIDIn
: TEI String
変数名を指定して、次の項目のIDを格納します。storeItemIn
を使用する場合以外は、これをstoreTypeIn
とともに使用します。
storeItemIn
: Item
タイプのTEI変数名を指定して、次の項目を格納します。storeTypeIn
およびstoreIDIn
を使用する場合は、この属性を使用しないでください。
すべてのTEI変数はAT_END
のスコープで、終了タグからJSPページの終わりまで使用できます。TEI変数はすべて、ページの前半でスクリプトレット・コードによって宣言され、getNextItem
タグのスコープで参照可能である必要があります。他のパーソナライズ・タグ内のTEI変数とは異なり、これらの変数は、JSPコンテナによっては宣言されません。
次の例は、getRecommendations
タグ内のループで使用されているgetNextItem
タグを示しています。このループは、getNextItem
がnull
を戻したときに終了します。
<op:getRecommendations from="top" tuningName="BalancedTuning" filteringName="GeneralFiltering" > <p> Top Picks selected especially for you: </p> <% String type=null; String ID=null; while(true) { %> <op:getNextItem storeTypeIn="type" storeIDIn="ID" /> <% if(type==null) break;%> <li> type: <%=type%> ID: <%=ID%> </li> <% } %> </op:getRecommendations>
次の例では、selectFromHotPicks
タグ内のループのgetNextItem
を示しています。
<op:selectFromHotPicks hotPicksGroups="1+5" tuningName="HotPicksTuning" filteringName="GeneralFiltering" > <p> We know you enjoy Horror and Musical movies. Look what we have on sale this week! </p> <% Item item=null; while(true) { %> <op:getNextItem storeItemIn="item" /> <% if(item==null) break;%> <li> <%= ApplicationSupport.displayItem(item) %> </li> <% } %> </op:selectFromHotPicks>
次の項では、record
XXX
およびremove
XXX
Record
タグの詳細を説明します。項目をリコメンデーション・エンジン・セッションのキャッシュに記録するには、適切なrecord
XXX
タグを使用します。セッション内で以前に記録された項目を削除する場合は、対応するremove
XXX
Record
タグを使用します。キャッシュ内の項目は、周期的にリコメンデーション・エンジン・セッションにフラッシュされます。フラッシュ後に項目を削除した場合は、データベースのラウンドトリップが必要となります。
「項目の記録および削除タグの概要」も参照してください。
このタグを使用して、ナビゲーション項目をリコメンデーション・エンジン・セッション内に記録します。これは、ユーザーがこの項目にナビゲートすることで関心を示したことを記録します。たとえば、ユーザーが興味のあるアイコンを見て、アイコンの横の「Tell Me More」ボタンをクリックする場合などです。ナビゲーション項目の削除用タグの詳細は、「removeNavigationRecordパーソナライズ・タグ」を参照してください。
startRESession
タグのdisableRecording
属性を「true
」に設定することにより、recordNavigation
タグのアクションを無効にできます。詳細は、「startRESessionパーソナライズ・タグ」を参照してください。
<op:recordNavigation [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
recordNavigation
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
関連情報は、「入力項目の仕様」を参照してください。
type
: たとえば「靴」など、項目タイプを指定します。この属性は、ID
とともに使用します。index
およびitemList
を使用する場合は、この属性を使用しないでください。
ID
: 指定したタイプの各項目に一意の識別番号です。この属性は、type
とともに使用します。index
およびitemList
を使用する場合は、この属性を使用しないでください。
itemList
: Item[]
配列を戻すJSP式を使用します。式内の項目配列は、前のリコメンデーション・タグから取得されます。この属性は、希望する要素配列を指定するindex
とともに使用します。type
およびID
を使用する場合は、この属性を使用しないでください。詳細は、「項目配列の入力」を参照してください。
index
: 希望する項目配列の要素の索引番号を指定するのに使用します。itemList
属性で項目配列を指定します。type
およびID
を使用する場合は、この属性を使用しないでください。
このタグを使用して、購入項目をリコメンデーション・エンジン・セッション内に記録します。これは、ユーザーが行った購入を記録します。購入項目の削除用タグの詳細は、「removePurchaseRecordパーソナライズ・タグ」を参照してください。
startRESession
タグのdisableRecording
属性を「true
」に設定することにより、recordPurchase
タグのアクションを無効にできます。詳細は、「startRESessionパーソナライズ・タグ」を参照してください。
<op:recordPurchase [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
recordPurchase
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
関連情報は、「入力項目の仕様」を参照してください。
属性は、recordNavigation
タグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。
次の2つのJSPページからの抽出部分を検討します。
ページ1:
<%@ page session="true" %> <op:getRecommendations storeResultsIn "myRecs" /> ...display recommendations... <% session.setAttribute("recommendationList", myRecs); %>
ページ2:
<%@ page session="true" %> <op:recordPurchase itemList="<%=session.getAttribute(¥"recommendationList¥") %>" index="<%=request.getParameter(¥"index¥" %>" />
ページ1は、リコメンデーションのリストを取得し、各項目を「Buy」リンク付きで表示します。項目配列は、使用する後続ページのsession
オブジェクト内に格納されます。
ページ2は、ユーザーが特定のリコメンデーションを購入するため、リンクを選択したときに実行されます。項目リストがセッション属性から取得され、選択された項目の索引がリクエスト・パラメータから取得されます。ページ2の例には、「買い物カゴ」があります。
このタグを使用して、レーティング項目をリコメンデーション・エンジン・セッション内に記録します。これは、この項目に対するユーザーのレーティングに基づきます。レーティング項目の削除用タグの詳細は、「removeRatingRecordパーソナライズ・タグ」を参照してください。
これは、recordNavigation
およびrecordPurchase
とは異なり、レーティング値も指定する必要があります。
<op:recordRating value = "rating_value" [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
recordRating
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
いずれの場合もvalue
属性が必要です。
関連情報は、「入力項目の仕様」を参照してください。
value
(必須): ユーザーのレーティング値を示す文字列です。整数または浮動小数点の数値を入力できます。数値は、マイニング・テーブル・リポジトリのMTR.MTR_BIN_BOUNDARIES
表の境界に基づいた適切なレーティング範囲内に存在する必要があります。
他の属性は、recordNavigation
タグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。
このタグを使用して、デモグラフィック項目をリコメンデーション・エンジン・セッション内に記録します。デモグラフィック項目は、特定のユーザーに関する個人的な情報で構成されます。デモグラフィック項目の削除用タグの詳細は、「removeDemographicRecordパーソナライズ・タグ」を参照してください。
このタグは、他のrecord
XXX
タグとは異なり、type
とvalue
の2つの属性のみを持ちます。type
属性は、AGE
など、この項目に含まれる情報の種類を示します。value
属性には、44
など、対応する値が含まれます。
<op:recordDemographic type = "GENDER"|"AGE"|"MARITAL_STATUS"|"PERSONAL_INCOME"| "HOUSEHOLD_INCOME"|"IS_HEAD_OF_HOUSEHOLD"|"HOUSEHOLD_SIZE"| "RENT_OWN_INDICATOR"|"ATTRIBUTE1"|...|"ATTRIBUTE50" value = "item_value" />
recordDemographic
タグには、ボディはありません。
type
(必須): サポートされているデモグラフィック・タイプの1つを指定します。複数の名前付きタイプに加え、ATTRIBUTE1
、ATTRIBUTE2
、...、ATTRIBUTE50
というように、カスタマイズ可能な50のタイプがあります。詳細は、「デモグラフィック項目」を参照してください。
value
(必須): GENDER
項目に対してMALE
またはFEMALE
など、適切な値を指定します。
このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたナビゲーション項目を削除します。ナビゲーション項目の記録用タグの詳細は、「recordNavigationパーソナライズ・タグ」を参照してください。
項目を削除するには、項目が記録されたものと同じリコメンデーション・エンジン・セッション中に、removeNavigationRecord
タグを使用する必要があります。セッション・キャッシュは、セッション中、リコメンデーション・エンジン・データベース・スキーマに周期的にフラッシュされます。フラッシュ後に項目を削除する場合は、タグの削除を実行するのにデータベースのラウンド・トリップが必要となります。
<op:removeNavigationRecord [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
removeNavigationRecord
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
関連情報は、「入力項目の仕様」を参照してください。
属性は、recordNavigation
タグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。
このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録された購入項目を削除します。購入項目の記録用タグの詳細は、「recordPurchaseパーソナライズ・タグ」を参照してください。
項目を削除するには、項目が記録されたものと同じリコメンデーション・エンジン・セッション中に、removePurchaseRecord
タグを使用する必要があります。セッション・キャッシュは、セッション中、リコメンデーション・エンジン・データベース・スキーマに周期的にフラッシュされます。フラッシュ後に項目を削除する場合は、タグの削除を実行するのにデータベースのラウンド・トリップが必要となります。
<op:removePurchaseRecord [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
removePurchaseRecord
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
関連情報は、「入力項目の仕様」を参照してください。
属性は、recordNavigation
タグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。
このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたレーティング項目を削除します。レーティング項目の記録用タグの詳細は、「recordRatingパーソナライズ・タグ」を参照してください。
これは、removeNavigationRecord
およびremovePurchaseRecord
とは異なり、レーティング値も指定する必要があります。
項目を削除するには、項目が記録されたものと同じリコメンデーション・エンジン・セッション中に、removeRatingRecord
タグを使用する必要があります。セッション・キャッシュは、セッション中、リコメンデーション・エンジン・データベース・スキーマに周期的にフラッシュされます。フラッシュ後に項目を削除する場合は、タグの削除を実行するのにデータベースのラウンド・トリップが必要となります。
<op:removeRatingRecord value = "rating_value" [ type = "type_of_item" ] [ ID = "item_ID_number" ] [ itemList = "item_array_expression" ] [ index = "index_into_item_array" ] />
removeRatingRecord
タグには、ボディはありません。
このタグには、2つの使用モードがあります。
または
いずれの場合もvalue
属性が必要です。
関連情報は、「入力項目の仕様」を参照してください。
他の属性は、recordNavigation
タグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。
このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたデモグラフィック項目を削除します。デモグラフィック項目の記録用タグの詳細は、「recordDemographicパーソナライズ・タグ」を参照してください。
このタグは、他のremove
XXX
Record
タグとは異なり、type
とvalue
の2つの属性のみを持ちます。type
属性は、AGE
など、この項目に含まれる情報の種類を示します。value
属性には、44
など、対応する値が含まれます。
項目を削除するには、項目が記録されたものと同じリコメンデーション・エンジン・セッション中に、removeDemographicRecord
タグを使用する必要があります。セッション・キャッシュは、セッション中、リコメンデーション・エンジン・データベース・スキーマに周期的にフラッシュされます。フラッシュ後に項目を削除する場合は、タグの削除を実行するのにデータベースのラウンド・トリップが必要となります。
<op:removeDemographicRecord type = "GENDER"|"AGE"|"MARITAL_STATUS"|"PERSONAL_INCOME"| "HOUSEHOLD_INCOME"|"IS_HEAD_OF_HOUSEHOLD"|"HOUSEHOLD_SIZE"| "RENT_OWN_INDICATOR"|"ATTRIBUTE1"|...|"ATTRIBUTE50" value = "item_value" />
removeDemographicRecord
タグには、ボディはありません。
属性は、recordDemographic
タグの場合と同じです。「recordDemographicパーソナライズ・タグ」を参照してください。
OracleAS Personalizationタグ・ライブラリには、JSPページでの項目、カテゴリおよびリコメンデーションの使用を簡易化する、次のような便利なラッパー・クラスが用意されています。
oracle.jsp.webutil.personalization.Item
必要に応じて、タグ・ハンドラはItem
インスタンスを作成します。Item
インスタンスを必ず使用し、場合によっては直接作成する、2つの特定の使用例があります。
購入項目またはナビゲーション項目については、予測値はランキングです。レーティング項目については、予測値はランキングです。
getCrossSellRecommendations
およびevaluateItems
タグの入力項目リスト用にインスタンスを手動で作成する場合
最初の使用例では、Item
クラスにより次のgetterメソッドが提供されます。
String getType()
たとえば「靴」などの項目タイプを戻します。デモグラフィック項目の場合はサポートされているデモグラフィック・タイプの1つを戻します。CATEGORY
の値は、リコメンデーションされる全体のカテゴリを示します。
long getID()
項目のID番号を戻します。
float getPrediction()
レーティング項目の場合はレーティング、購入項目またはナビゲーション項目の場合はランキングを戻します。ランキングは常に整数ですが、レーティングは浮動小数点の数値もありうるため、この属性は浮動小数点の数値である必要があります。
2番目の使用例では、次のsetterメソッドが提供されます。
項目をカテゴリとして定義し、また、カテゴリとして定義済の場合は判定するメソッドもあります。
Item
クラスにより、次のパブリック・コンストラクタが提供されます。
type
属性は文字列である必要がありますが、ID
属性は、文字列またはlong
値のいずれでも指定できます。
Item
クラスは、インタレスト・ディメンションの場合、次のString
定数値も定義します。次の値を使用して、リコメンデーション・タグのstoreInterestDimensionIn
属性で戻される値と比較します。
INT_DIM_NAVIGATION
: 関心度の高いナビゲーション項目としてリコメンデーションされる項目を示します。
INT_DIM_PURCHASING
: 関心度の高い購入項目としてリコメンデーションされる項目を示します。
INT_DIM_RATING
: 関心度の高いレーティング項目としてリコメンデーションされる項目を示します。
OracleAS Personalizationタグの属性設定に関して、次の制限事項に注意してください。
startRESession
タグには、次の制限事項があります。
REName
属性の最大許容文字数は12です。
REURL
属性の最大許容文字数は256です。
RESchema
属性の最大許容文字数は30です。
REPassword
属性の最大許容文字数は30です。
userID
属性の最大許容文字数は32です。
personalization.xml
ファイルでは使用されないuserID
を除き、personalization.xml
ファイル内の<RE>
要素の対応する属性にも同じ制限事項が適用されます。
Item
要素の数は1024以下です。この値は、タグ間で渡される1つのItem[]
配列の最大サイズであるだけでなく、項目リストと1つ以上のforItem
タグの両方からタグが入力を受信する場合の合計最大値になります。
getRecommendations
、getCrossSellRecommendations
およびselectFromHotPicks
の場合は、最大1024のホット・ピックス・グループを指定できます。これは、getRecommendations
およびgetCrossSellRecommendations
タグのfromHotPicksGroups
属性、ならびに、fromHotPicksGroups
タグのhotPicksGroups
属性に適用されます。
filteringCategories
属性で最大256のカテゴリを指定できます。同等に、personalization.xml
ファイルの<Filtering>
要素内には、256の<Category>
サブ要素を含めることができます。
recordDemographic
、removeDemographicRecord
、recordRating
およびremoveRatingRecord
タグのvalue
属性の最大長は、60文字です。
OracleAS Personalizationタグ・ライブラリでは、グローバルおよびデフォルトのタグ属性設定を指定するためのpersonalization.xml
という構成ファイルの使用がサポートされています。次の項では、personalization.xml
ファイルおよびサポートされている要素について説明します。
OracleAS Personalizationタグ・ライブラリでは、personalization.xml
という構成ファイルがサポートされています。これらのファイルは、オプションのタグ属性にデフォルト設定を指定する場合や、デフォルトおよび名前付きのチューニング設定やフィルタ処理設定を指定する場合に便利です。特にチューニングおよびフィルタ処理設定は、作業が複雑で、複数のタグまたは複数のページに設定する必要があり不便なため、personalization.xml
を使用するのが有益です。
特定のアプリケーションに関連する2つのpersonalization.xml
ファイルが存在します。
/WEB-INF/personalization.xml
このファイルは特定のアプリケーション専用で、アプリケーション全体の設定またはデフォルトに使用します。
ORACLE_HOME
/j2ee/home/config/personalization.xml
これは、サーバー全体の構成ファイルです。タグ属性、または特定のアプリケーションのpersonalization.xml
ファイルで必要な設定が見つからないに場合に使用します。
この項では、OracleAS Personalizationタグ・ライブラリでサポートされているpersonalization.xml
要素のXML DTDについて説明します。これらの要素は、トップレベルの<personalization-config>
要素内に存在します。
パーソナライズ・タグは、personalization.xml
ファイルをこのDTDに対して検証します。
この要素を使用して、maxQuantity
(戻されるリコメンデーションの最大数を指定)、getRecommendations
、getCrossSellRecommendations
およびselectFromHotPicks
タグのデフォルト値を設定します。
maxQuantity
設定は、正の整数で示される文字数である必要があります。
<!ELEMENT RecommendationSettings EMPTY> <!ATTLIST RecommendationSetting maxQuantity CDATA #REQUIRED>
この要素を使用して、リコメンデーション・エンジンの接続名を指定し、接続します。属性の詳細は、「startRESessionパーソナライズ・タグ」を参照してください。
<!ELEMENT RE EMPTY> <!ATTLIST RE Name CDATA #REQUIRED> <!ATTLIST RE URL CDATA #REQUIRED> <!ATTLIST RE Schema CDATA #REQUIRED> <!ATTLIST RE Password CDATA #REQUIRED> <!ATTLIST RE CacheSize CDATA #REQUIRED> <!ATTLIST RE FlushInterval CDATA #REQUIRED>
startRESession
タグのREName
属性内のName
属性を参照できます。
OC4Jのjazn-data.xml
ファイルに、リコメンデーション・エンジン・データベース内のアカウント(たとえば、scott
)用の<user>
要素が含まれている場合は、次のように特殊な右矢印構文でダッシュ(-
)と右山カッコ(>
)に続けてこのアカウント名を指定することにより、そのファイルから不明瞭化されていないパスワードを取得できます。
Password="->scott"
この要素を使用して、名前付きチューニング設定を定義します。属性の詳細は、「チューニング設定」を参照してください。
<!ELEMENT Tuning EMPTY> <!ATTLIST Tuning Name CDATA #REQUIRED> <!ATTLIST Tuning DataSource (NAVIGATION|PURCHASING|RATING|DEMOGRAPHIC|ALL) "ALL" > <!ATTLIST Tuning InterestDimension (NAVIGATION|PURCHASING|RATING) #REQUIRED > <!ATTLIST Tuning PersonalizationIndex (LOW|MEDIUM|HIGH) #REQUIRED > <!ATTLIST Tuning ProfileDataBalance (HISTORY|CURRENT|BALANCED) #REQUIRED > <!ATTLIST Tuning ProfileUsage (INCLUDE|EXCLUDE) "INCLUDE" >
Name
属性は必須で、また、この一連のチューニング設定に一意の名前を指定して、この名前がリコメンデーション・タグのtuningName
属性で参照可能になるようにする必要があります。
リコメンデーション・リクエストのチューニング設定を完全に定義するには、INCLUDE
のデフォルト値を持つProfileUsage
以外、他の属性も必須です。詳細は、『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
個別のチューニング・タグ属性およびtuningName
タグ属性が(personalization.xml
内の対応する<Tuning>
要素とともに)ない場合、チューニング設定にはこの要素を使用します。
属性の意味は、前述の<Tuning>
要素と同じです。
<!ELEMENT DefaultTuning EMPTY> <!ATTLIST DefaultTuning DataSource (NAVIGATION|PURCHASING|RATING|DEMOGRAPHIC|ALL) "ALL" > <!ATTLIST DefaultTuning InterestDimension (NAVIGATION|PURCHASING|RATING) #REQUIRED > <!ATTLIST DefaultTuning PersonalizationIndex (LOW|MEDIUM|HIGH) #REQUIRED > <!ATTLIST DefaultTuning ProfileDataBalance (HISTORY|CURRENT|BALANCED) #REQUIRED > <ATTLIST! DefaultTuning ProfileUsage (INCLUDE|EXCLUDE) "INCLUDE" >
これらの要素を使用して、名前付きフィルタ処理設定を定義します。属性の詳細は、「リコメンデーションのフィルタ処理」を参照してください。
フィルタ処理のName
属性を使用して、パーソナライズ・タグから参照される一意の名前を指定します。
AllItems
およびAllCategories
サブ要素以外のフィルタ処理サブ要素内に、1つ以上の<Category>
要素をネストする必要があります。<Category>
要素のコンテンツは、long整数で示される文字列である必要があります。
<!ELEMENT Filtering (ExcludeItems|IncludeItems|ExcludeCategories| IncludeCategories|CategoryLevel|SubTreeItems| SubTreeCategories|AllItems|AllCategories) > <!ATTLIST Filtering Name CDATA #REQUIRED> <!ATTLIST Filtering TaxonomyID CDATA #REQUIRED> <!ELEMENT Category (#PCDATA) > <!ELEMENT ExcludeItems ( Category+ ) > <!ELEMENT IncludeItems ( Category+ ) > <!ELEMENT ExcludeCategories ( Category+ ) > <!ELEMENT IncludeCategories ( Category+ ) > <!ELEMENT CategoryLevel ( Category+ ) > <!ELEMENT SubTreeItems ( Category+ ) > <!ELEMENT SubTreeCategories ( Category+ ) > <!ELEMENT AllItems EMPTY > <!ELEMENT AllCategories EMPTY >
個別のフィルタ処理タグ属性およびfilteringName
タグ属性が(personalization.xml
内の対応する<Filtering>
要素とともに)ない場合、フィルタ処理設定にはこの要素を使用します。
<!ELEMENT DefaultFiltering (ExcludeItems|IncludeItems|ExcludeCategories| IncludeCategories|CategoryLevel|SubTreeItems SubTreeCategories|AllItems|AllCategories) > <!ATTLIST DefaultFiltering TaxonomyID CDATA #REQUIRED> <!ELEMENT Category (#PCDATA) > <!ELEMENT ExcludeItems ( Category+ ) > <!ELEMENT IncludeItems ( Category+ ) > <!ELEMENT ExcludeCategories ( Category+ ) > <!ELEMENT IncludeCategories ( Category+ ) > <!ELEMENT CategoryLevel ( Category+ ) > <!ELEMENT SubTreeItems ( Category+ ) > <!ELEMENT SubTreeCategories ( Category+ ) > <!ELEMENT AllItems EMPTY > <!ELEMENT AllCategories EMPTY >
<?xml version="1.0" ?> <personalization-config> <description> Sample personalization config file </description> <RecommendationSettings maxQuantity="5" /> <RE Name="RE1" URL="jdbc:oracle:thin:@sid" Schema="RESCHEMA" Password="secret" CacheSize="2999" FlushInterval="30000" /> <RE Name="RE2" URL="jdbc:oracle:oci:@acme" Schema="RE2-schema" Password="RE2-pwd" CacheSize="5555" FlushInterval="100000" /> <Tuning Name = "tuning1" DataSource="ALL" InterestDimension="NAVIGATION" PersonalizationIndex="HIGH" ProfileDataBalance="BALANCED" ProfileUsage="INCLUDE" /> <DefaultTuning DataSource="PURCHASING" InterestDimension="RATING" PersonalizationIndex="MEDIUM" ProfileDataBalance="CURRENT" ProfileUsage="EXCLUDE" /> <Filtering Name = "filter1" TaxonomyID="25" > <CategoryLevel> <Category>10</Category> <Category>11</Category> <Category>15</Category> </CategoryLevel> </Filtering> <DefaultFiltering TaxonomyID="1" > <AllItems/> </DefaultFiltering> </personalization-config>
または、RESCHEMA
およびRE2-schema
アカウントにjazn-data.xml
エントリがある場合、personalization.xml
内でクリア・テキストで指定するかわりに、次のようにそのエントリから不明瞭化されていないパスワードを取得できます。
<RE Name="RE1" URL="jdbc:oracle:thin:@sid" Schema="RESCHEMA" Password="->RESCHEMA" CacheSize="2999" FlushInterval="30000" /> <RE Name="RE2" URL="jdbc:oracle:oci:@acme" Schema="RE2-schema" Password="->RE2-schema" CacheSize="5555" FlushInterval="100000" />
|
Copyright © 2002, 2006 Oracle Corporation. All Rights Reserved. |
|