ヘッダーをスキップ

Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス
10g(10.1.3.1.0)

B31854-01
目次
目次
索引
索引

戻る 次へ

10 パーソナライズ・タグ

この章では、Oracle Application Server Personalizationで使用するOC4Jに付属のタグ・ライブラリについて説明します。このライブラリを使用するには、OracleAS Personalization製品が適切にインストールされていることが前提です。

この章には、次の項目が含まれます。

OracleAS Personalizationの詳細は、『Oracle Application Server Personalization管理者ガイド』および『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。

パーソナライズの概要

この項では、パーソナライズについて紹介します。まず、一般的な概念、続いて、特にOracleによる実装の概要について説明します。

パーソナライズの一般的な概要

この概要では、パーソナライズの一般的な概念について紹介し、概念が混同されることがある、パーソナライズとカスタマイズの違いについて説明します。

パーソナライズの概念

パーソナライズは、行動、購入、レーティングおよびデモグラフィック・データに基づいて、アプリケーション・ユーザー向けにリコメンデーションを作成する機能です。リコメンデーションは、ユーザーのアプリケーション・セッション中にリアルタイムで作成されます。ユーザーの動作はデータベース・リポジトリ内のプロファイルに保存され、将来のユーザーの動作を予測するためのモデルの構築に使用されます。

将来のユーザー・セッションでは、これらのモデルを使用して、購入する製品またはサービス、あるいはアクセスするWebサイトなど、類似ユーザー(または単一セッション内では、同じユーザー)の動作および希望を予測します。ユーザーは、これらの予測に基づいたリコメンデーションを受け取ります。

OracleAS Personalizationタグ・ライブラリは、パーソナライズの2つの主要機能を公開します。

典型的なパーソナライズ・スキーマでは、次のいずれか、またはすべてが考慮されます。

パーソナライズとカスタマイズの比較

Oracleで実装され、この章で説明しているパーソナライズとは、コンテンツが自動的および暗黙的に選択される、一連の複雑で動的な機能です。通常、「パーソナライズ」と呼ばれるが、実際には単に「カスタマイズ」である、より単純で静的なWebサイトの機能とは混同しないでください。

多くのサイトが、たとえば、地域の天気、関心のある株価情報、好きなスポーツといった項目をユーザーに示し、選択した項目に基づいて出力を表示するなどのカスタマイズを提供しています。これは、確かに配信されるコンテンツをパーソナライズしていますが、プロセスは静的で、明示的なユーザーの関与を必要とします。ユーザーが、他の項目を選択することで明示的に変更する機会が与えられるまで、コンテンツの焦点は変わりません。

パーソナライズは、ユーザーの直接的なリクエストなしに、ユーザーのコンテンツを自動的に選択します。コンテンツの選択プロセスは表示されません。さらに、動作を観察することで、システムがユーザーの傾向をより理解するようになると、将来の動作および関心を予測するうえで正確性が増します。

Oracle Application Server Personalizationの概要

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つのエンジンのみで構成できますが、ロード・バランシングおよびフェイルオーバーに対応するため、ファーム内に複数のエンジンを含めることをお薦めします。望ましい効果を得るため、これらのエンジンは、異なる物理的システム上の別のデータベース内に置かれます。

リコメンデーション・エンジンAPIの概念および機能の概要

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を各匿名ビジターに割り当てることで回避できます。


注意

リコメンデーション・エンジンAPIを直接使用するのに比べ、タグ・ライブラリの1つの利点は、ステートレス・アプリケーション内のリコメンデーション・エンジン・セッションの追跡が自動管理される点です。APIを直接使用する場合、このマッピングはユーザー自身が設定する必要があります。

ただし、タグ・ライブラリを使用するリコメンデーション・エンジン・セッションの追跡には、Cookieをサポートおよび受け入れるためのクライアント(おそらくブラウザ)が必要である点に注意してください。これが常に保証されない場合、ステートフルなアプリケーションとして宣言する必要があります。 


リコメンデーションのリクエスト

リコメンデーション・エンジン・セッションが確立され、データが移入された後は、アプリケーションは、そこからリコメンデーションをリクエストできます。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セッション・オブジェクトによって状態情報を保持するステートフル・アプリケーションと、保持しないステートレス・アプリケーションのいずれかをサポートできます。startRESessionsession属性を使用して、使用するモードを指定できます。タグ・ライブラリで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パーソナライズ・タグ」を参照してください。


注意

endRESessionがステートフル・アプリケーションで使用されない場合、HTTPセッションがスコープ外になると、基礎となるリコメンデーション・エンジン・セッションは自動的に終了します。ステートレス・アプリケーションでは、基礎となるリコメンデーション・エンジン・セッションをタイム・アウトさせることができます。  


パーソナライズ・タグでの項目の使用

OracleAS Personalizationタグ・ライブラリには、項目の操作用に多数のタグが用意されています。ユーザーの動作情報を記録するタグ、以前に記録されたユーザーの動作情報を削除するタグ、リコメンデーションとして項目を出力するタグ、およびレーティングまたはランキングのいずれかに評価される特定の項目セットの入力用タグがあります。

次の項では、タグ・ライブラリの使用方法の概要について説明します。

項目の記録および削除タグの概要

次のタグは、リコメンデーション・エンジン・セッション・キャッシュにデータ項目を記録するか、または、セッション内で以前に記録された項目を削除するためのものです。

購入、ナビゲーションまたはレーティング項目を記録あるいは削除するには、タイプとID(レーティング項目の場合は値)を指定するか、項目配列と索引を配列内に指定することにより、記録あるいは削除する項目を特定する必要があります。詳細は、「入力項目の仕様」を参照してください。現在のユーザーに暗黙的に適用されるデモグラフィック項目を記録または削除するには、AGEなどのデモグラフィックのタイプ、および「44」などの値を指定する必要があります。詳細は、「デモグラフィック項目」を参照してください。

通常、removeXXXRecordタグを使用する必要はほとんどありません。recordXXXタグを受信ページ内に配置する場合、removePurchaseRecordまたはremoveNavigationRecordタグを使用する必要はありません。removeRatingRecordおよびremoveDemographicRecordタグは、最初の入力が記録された後で、ユーザーが考えを変えるような状況にのみ使用する必要があります。関連情報は、「項目記録タグの使用モード」を参照してください。

タグ情報の詳細は、「項目記録および削除タグの説明」を参照してください。

リコメンデーションおよび評価タグの概要

次のタグは、リコメンデーションとして項目の配列を戻します。

このドキュメントでリコメンデーション・タグと呼ばれているselectFromHotPicksgetRecommendationsおよびgetCrossSellRecommendationsタグの場合、項目の配列は、分類全体から、または分類内のホット・ピックス・グループから戻される一連のリコメンデーションです。getCrossSellRecommendationsタグは、リコメンデーション(抱合せ販売ともいう)の基礎となる、一連の購入項目またはナビゲーション項目も入力として取得する必要があります。

ホット・ピックスはプロモーション項目、または特別に選択された他の項目グループです。選択する項目は、タグの属性により指定できます。ホット・ピックスの詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。

evaluateItemsの場合、評価する特定の項目セットを入力する必要があります。同じ項目の一部またはすべてが戻され(戻されない場合もある)、インタレスト・ディメンションに基づいてレーティングまたはランキングが決定されます。バックグラウンド情報は、「レーティングとランキング」を参照してください。

getRecommendationsおよびevaluateItemsタグの場合、結果は、特定のユーザーに基づきます。ユーザーIDは、startRESessionタグにより指定され、すべての後続のパーソナライズ・タグに暗黙的に適用されます。getCrossSellRecommendationsタグは、一連の入力項目によって決まります。

リコメンデーション・タグの詳細

次は、各リコメンデーション・タグの追加情報です。タグの詳細説明は、「リコメンデーションおよび評価タグの説明」を参照してください。

入力項目

入力として項目を取得するタグである、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属性を使用します。

selectFromHotPicksgetRecommendationsおよびgetCrossSellRecommendationsタグは、NAVIGATIONPURCHASINGまたはRATINGのいずれかである、配列内の項目のインタレスト・ディメンションを示すTEI String変数も戻します。インタレスト・ディメンションに変数名を指定するには、storeInterestDimensionInタグ属性を使用します。


注意

タグ補足情報クラスおよびスクリプト変数の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。  


入力項目の仕様

入力項目を必要とする2つの一般的な状況があります。

次の一般的な方法で、項目を指定できます。

  1. 希望の項目にそれぞれタイプおよびIDを指定し、レーティング項目の場合は、レーティング値も指定します。デモグラフィック項目の場合は、タイプおよび値を指定します。

  2. 希望の各項目について項目配列を指定し、この配列内に索引を指定します。

  3. 項目の配列全体を指定します(recordXXXおよびremoveXXXRecordタグの場合は関係ありません)。

使用例2と3の場合の詳細は、次の項の「項目配列の入力」を参照してください。

次のように、1つ以上の項目をgetCrossSellRecommendationsまたはevaluateItemsタグに入力できます。

または

または

これらのプロシージャを1つ以上同時に使用できます。getCrossSellRecommendationsおよびevaluateItemsタグは、複数のソースから入力を取得できます。

次のように、recordXXXまたはremoveXXXRecordタグに項目を指定できます。

または

項目配列の入力

Item[]オブジェクトの配列をタグに入力する場合、JSP式を使用して配列を指定する必要があります。これは、次のすべてのタグに適用されます。

次の方法で配列を指定できます。

デモグラフィック項目

性別および年齢など、ユーザーに関するバックグラウンド情報で構成されるデモグラフィック・データ項目は、recordDemographicおよびremoveDemographicRecordタグでのみ使用されます。購入、ナビゲーションまたはレーティング情報を含まないため、リコメンデーション・タグあるいはgetCrossSellRecommendationsevaluateItemsタグへの入力からは戻されません。

購入項目ならびにナビゲーション項目の場合はtypeおよびIDによって識別されますが、デモグラフィック項目は、typeならびにvalueによって識別されます。これらは、recordDemographicおよびremoveDemographicRecordタグのただ2つの属性です。次に示す複数のタイプが事前定義されており、マイニング・テーブル・リポジトリのMTR.MTR_CUSTOMERS表に列として存在します。

ATTRIBUTE1からATTRIBUTE50まで、カスタマイズ可能な列が50あります。カスタマイズ可能なタイプを使用するには、次を実行する必要があります。

  1. ATTRIBUTEx列を既存のエンタープライズ・データベースにマップし、属性を定義します。

  2. MTR.MTR_BIN_BOUNDARIES表で、対応する値の境界を定義します。

項目記録タグの使用モード

現在、項目記録タグの操作モードとして受信モードのみ使用できます。このモードでは、購入する項目やナビゲート先のURLなどをユーザーが選択すると、受信ページと呼ばれる送信先のページに、この項目を記録するrecordXXXタグが含まれます。

一般的な例として、getRecommendationsタグを使用するページで、順に表示するリコメンデーションのリストが生成されると仮定します。各リコメンデーション項目には、ユーザーが詳細情報を取得する場合に選択する「Details」リンク、およびユーザーが項目を購入する場合に選択する「Purchase」リンクが含まれます。「Details」を選択してユーザーがアクセスするページにrecordNavigationタグ、「Purchase」を選択してユーザーがアクセスするページ(たとえば、購入確認ページ)にrecordPurchaseタグを配置できます。いずれの場合も、この項目に一意で指定されているタイプおよびIDは、受信ページ側ですでに認識されていると予想できます。

同様に、ユーザーがデモグラフィック情報を入力するJSPページにrecordDemographicタグを配置することもあります。たとえば、ユーザーが配偶者の有無、年齢、個人収入を入力できるページがあるとします。44歳の独身で年収が$50,000のユーザーがこの情報を入力すると、HTMLフォームのバックグラウンドのターゲット・アクションとして、このプロファイルに合せて宣伝ページが作成されます。このページには、MARITAL_STATUSAGEおよびPERSONAL_INCOMEタイプのrecordDemographicタグが含まれます。単一のページに複数のrecordDemographicタグを使用できます。

通常、購入項目およびナビゲーション項目の場合はtypeIDなど、適切な属性を指定することにより、項目を識別します。または、以前に作成した項目リスト、およびそのリストに索引値を使用して、項目を選択します。アプリケーションは、sessionまたはrequestオブジェクト内に項目リスト配列オブジェクトをコピーし、また、索引もパラメータとして受信ページに渡します。受信ページでは、項目リストがsessionまたはrequestオブジェクトから取得され、索引とともにrecordXXXタグに渡されます。このアプローチでは、送信ページは、受信ページを起動する前に1つ以上の索引を収集し、同じ項目リストから多数の項目を同時に記録できるという、少なくとも1つの利点があります。

リコメンデーションおよび評価タグに対するチューニング、フィルタ処理、ソートの使用

前に要約したように、selectFromHotPicksgetRecommendationsgetCrossSellRecommendationsおよびevaluateItemsタグは、すべて項目の配列を戻します。次の項では、戻されるリコメンデーションを詳細に作成するのに使用するチューニングおよびフィルタ処理設定について説明します。また、リコメンデーションのソート設定に関する情報もあります。ただし、項目の出力は常に一連の項目の入力からなので、フィルタ処理設定は、evaluateItemsタグには適用されません。

チューニング設定

複数のチューニング設定によって、戻されるリコメンデーション内でリコメンデーション・エンジンによって使用されるいくつかの条件および論理が決定されます。各設定には値が必要であり、ここで説明する方法の1つで決定されます。

これらの設定は、表10-1のサマリーで示すように、selectFromHotPicksgetRecommendationsgetCrossSellRecommendationsおよびevaluateItemsタグのtuningXXX属性により指定できます。または、tuningName属性を使用して、アプリケーション・レベルのpersonalization.xmlファイル(優先)か、サーバー全体のpersonalization.xmlファイルのいずれかの中の、指定した<Tuning>要素から設定を取得できます。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。

属性設定がなく、<Tuning>要素もない場合、次のステップの順にデフォルト値が選択されます。

  1. アプリケーション・レベルのpersonalization.xmlファイル内の<DefaultTuning>要素に準拠します。

  2. サーバー全体のpersonalization.xmlファイル内の<DefaultTuning>要素に準拠します。

  3. 次のハードコードされた設定に準拠します。

    tuningDataSource="ALL"
    tuningInterestDimension="NAVIGATION"
    tuningPersonalizationIndex="MEDIUM"
    tuningProfileDataBalance="BALANCED"
    tuningProfileUsage="INCLUDE"
    


    注意

    ハードコードされているデフォルトを使用するには、tuningXXX属性設定のいずれも使用しないでください。一部のチューニング設定がタグ内で定義されている場合、ハードコードされた値はいずれも使用されません。この場合、タグ属性内またはpersonalization.xmlファイル内にいずれの設定も見つからなければ例外が発生します。 


    表10-1    リコメンデーションのリクエスト設定のチューニング 
    属性  説明  設定 

    tuningDataSource 

    リコメンデーションの作成で考慮される過去のユーザー・データを指定します。(この種類のデータ・ソースをJ2EEプラットフォーム・モデルのデータ・ソース概念と混同しないでください。) 

    ALL
    NAVIGATION
    PURCHASE
    RATING
    DEMOGRAPHIC
     

    tuningInterestDimension 

    戻されるリコメンデーションの種類を指定します。 

    RATING
    PURCHASING
    NAVIGATION
     

    tuningPersonalizationIndex 

    リコメンデーション・アルゴリズムの一般性またはパーソナライズの程度を選択します。 

    LOW
    MEDIUM
    HIGH
     

    tuningProfileDataBalance 

    リコメンデーションを作成する際に、履歴データ、現在のセッション・データ、または両方のどれに重点を置くかを選択します。 

    HISTORY
    CURRENT
    BALANCED
     

    tuningProfileUsage 

    ユーザーのデモグラフィック・プロファイルのデータを使用するかどうかを選択します。 

    INCLUDE
    EXCLUDE
     

詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。

リコメンデーションのフィルタ処理

チューニング設定に加え、リコメンデーション・リクエストに指定可能なフィルタ処理設定があります。各設定には値が必要であり、ここで説明する方法の1つで決定されます。

これらの設定は、getRecommendationsgetCrossSellRecommendationsおよびselectFromHotPicksタグのfilteringXXX属性により指定できます。(フィルタ処理は、evaluateItemsタグには関係ありません。)または、filteringName属性を使用して、アプリケーション・レベルのpersonalization.xmlファイル(優先)か、サーバー全体のpersonalization.xmlファイルのいずれかの中の、指定した<Filtering>要素から設定を取得できます。「パーソナライズ・タグ・ライブラリ構成ファイル」も参照してください。

属性設定も<Filtering>要素も存在しない場合、デフォルト値はアプリケーション・レベルのpersonalization.xmlファイル(優先)か、サーバー全体のpersonalization.xmlファイルのいずれかの中の、<DefaultFiltering>要素から選択されます。

これらは、フィルタ処理用パラメータです。

すべてのXXX_CATEGORIES設定について、リコメンデーションは、映画のタイトルなどの特定の項目ではなく「ドラマ」など、カテゴリの形式で戻されます。この場合、項目タイプはCategoryで、先に、マイニング・テーブル・リポジトリでカテゴリが定義されている必要があります。

詳細は、『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。

ソート順序

レーティングまたはランキングのいずれかの各項目のpredictionフィールドに従って、戻された項目をソートできます。このフィールドを使用する方法の詳細は、「レーティングとランキング」を参照してください。

selectFromHotPicksgetRecommendationsgetCrossSellRecommendationsまたはevaluateItemsタグのsortOrder属性を使用して、ASCENDDESCENDあるいは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タグ・ライブラリを使用する場合は、次の要件に注意してください。

taglibディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。


注意

  • このタグ構文では、接頭辞「op:」が使用されます。慣例的にこのように表記しますが、必須ではありません。任意の接頭辞をtaglibディレクティブに指定できます。

  • このマニュアルのタグ構文規則の詳細は、「タグ構文の表記と意味」を参照してください。

 

ここで説明しているタグ属性の中には、使用する場合にOracleAS Personalizationおよびリコメンデーション・エンジンの実装に関する一般的な知識を必要とするものがあります。詳細は、『Oracle Application Server Personalization管理者ガイド』または『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。

セッション管理タグの説明

次の項では、リコメンデーション・エンジン・セッションの開始、終了および管理用のタグについて説明します。

startRESessionパーソナライズ・タグ

この項では、リコメンデーション・エンジン・セッションの開始に使用する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タグには、ボディはありません。

属性

属性の説明に続く、「属性の使用方法」も参照してください。

属性の使用方法

次の例は、リコメンデーション・エンジン・データベースのURLおよびユーザー名のscottを確立し、OC4J jazn-data.xmlファイルからscottアカウントの不明瞭化されていないパスワードを取得するstartRESessionタグを示します。これは、jazn-data.xmlscottのエントリがあることを前提とします。

<op:startRESession REName = "RE1"
                   REURL = "@jdbc:oracle:thin:@sid"
                   RESchema = "scott"
                   REPassword = "->scott" />

endRESessionパーソナライズ・タグ

このタグを使用して、ステートフル・アプリケーションのリコメンデーション・エンジン・セッションを明示的に終了します。通常、これはオプションですが、一部の状況では必要とされます。(詳細は、「リコメンデーション・エンジン・セッションの終了」を参照してください。)アプリケーション・ロジックで、リコメンデーション・エンジン・セッションを今後必要としないと判断される場合も、ステートフル・アプリケーションでこのタグを使用することをお薦めします。これにより、不必要なリソースが解放されます。

endRESessionを使用しない状況では、次の動作に注意してください。

構文

<op:endRESession />

endRESessionタグには、属性もボディもありません。

setVisitorToCustomerパーソナライズ・タグ

匿名のビジターが、登録済のカスタマ・アカウントを作成する場合に、このタグを使用します。このタグを実行するとき、既存のリコメンデーション・エンジン・セッションがビジターのセッションからカスタマのセッションに変換されます。このセッションで以前に収集されたデータは保存されます。このタグは、実際には新規のカスタマを作成せず、また、新規ログインを実行しません。継続中のリコメンデーション・エンジン・セッションを変換するのみです。

customerIDは、リクエスト時の属性で、アプリケーションによって提供される必要があります。

構文

<op:setVisitorToCustomer customerID = "<%=registered_customer_name%>" />

setVisitorToCustomerタグには、ボディはありません。

属性

リコメンデーションおよび評価タグの説明

次の項で、リコメンデーション・タグ、評価タグおよび関連サブタグの詳細を説明します。

次のタグが対象です。

「リコメンデーションおよび評価タグの概要」も参照してください。

getRecommendationsパーソナライズ・タグ

このタグを使用して、購入、ナビゲーションまたはレーティングに関する一連のリコメンデーションをリクエストします。特定の分類からの項目が、指定したチューニングおよびフィルタ処理を使用して考慮されます。リコメンデーションは、次のタイプの配列で戻されます。

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>
属性

属性の説明に続く、「属性の使用方法」も参照してください。

属性の使用方法

次は、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パーソナライズ・タグ」も参照してください。

getCrossSellRecommendationsパーソナライズ・タグ

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>
属性

属性の説明に続く、「属性の使用方法」も参照してください。

「getRecommendationsパーソナライズ・タグ」で説明しているように、「属性の使用方法」で説明されている制限事項以外、またgetCrossSellRecommendationsタグにはstoreResultsIn属性が必要な点以外は、getRecommendationsタグにはgetCrossSellRecommendationsタグのその他すべての属性が使用されます。

チューニング、フィルタ処理およびソートの詳細は、「チューニング設定」「リコメンデーションのフィルタ処理」および「ソート順序」を参照してください。

属性の使用方法

次の例では、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パーソナライズ・タグ

このタグを使用して、分類全体からではなく、また、ユーザー・プロファイルを考慮せずに、一連のホット・ピックス・グループからのリコメンデーションをリクエストします。指定したグループの項目に対し、チューニングおよびフィルタ処理も適用できます。

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>
属性

属性の説明に続く、「属性の使用方法」も参照してください。

「getRecommendationsパーソナライズ・タグ」で説明しているように、getRecommendationsタグには、「属性の使用方法」で説明する制限事項以外、その他の属性をすべて使用します。

チューニング、フィルタ処理およびソートの詳細は、「チューニング設定」「リコメンデーションのフィルタ処理」および「ソート順序」を参照してください。

ネストされたgetNextItemタグを使用するselectFromHotPicksタグの例については、「getNextItemパーソナライズ・タグ」を参照してください。

属性の使用方法

evaluateItemsパーソナライズ・タグ

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>
属性

属性の説明に続く、「属性の使用方法」も参照してください。

「getRecommendationsパーソナライズ・タグ」で説明しているように、「属性の使用方法」で説明されている制限事項以外、またevaluateItemsタグにはstoreResultsIn属性が必要な点以外は、getRecommendationsタグにはevaluateItemsのその他すべての属性を使用します。

チューニングおよびソートの詳細は、「チューニング設定」および「ソート順序」を参照してください。

属性の使用方法

この例では、販売項目を入力として取得し、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)); %>

forItemパーソナライズ・タグ

このタグを使用して、getCrossSellRecommendationsタグまたはevaluateItemsタグの入力となる各項目を指定します。

forItemタグの使用方法の概要は、「入力項目の仕様」を参照してください。


注意

「パーソナライズ・タグの制限事項」も参照してください。 


構文

<op:forItem 
          [ itemList = "item_array_expression" ]
          [ index = "index_into_item_array" ]
          [ type = "type_of_item" ]
          [ ID = "item_ID_number" ] />

forItemタグには、ボディはありません。

このタグには、2つの使用モードがあります。

または

属性

次の例は、指定された複数の靴の購入項目を抱合せ販売のリコメンデーション用の入力として使用し、生成されたリコメンデーションを表示します。

<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) %>

getNextItemパーソナライズ・タグ

オプションで、getRecommendations内またはselectFromHotPicksタグ・ボディにネストされたgetNextItemタグを使用して、出力タグによって戻されるリコメンデーションにアクセスできます。(あるいは、getRecommendationsまたはselectFromHotPicksタグのstoreResultsIn属性を使用してもこの項目にアクセスできます。)

getNextItemタグが初めて実行されると最初の項目にアクセスし、その後、項目配列内をとおしてgetNextItemが引き続き1つずつ実行され、次の項目が取得されます。項目配列の最後に達すると、タグは各タグ属性にnull値を与えます。

タグ属性を使用して、次の項目のタイプおよびID、またはItemインスタンス自体のいずれかを格納します。

次の点に注意してください。

構文

<op:getNextItem 
          [ storeTypeIn = "TEI_variable_for_item_type" ]
          [ storeIDIn = "TEI_variable_for_item_ID" ]
          [ storeItemIn = "TEI_variable_for_Item_instance" ] />

getNextItemタグには、ボディはありません。

このタグには、2つの使用モードがあります。

または

属性

属性の説明に続く、「属性の使用方法」も参照してください。

属性の使用方法

すべてのTEI変数はAT_ENDのスコープで、終了タグからJSPページの終わりまで使用できます。TEI変数はすべて、ページの前半でスクリプトレット・コードによって宣言され、getNextItemタグのスコープで参照可能である必要があります。他のパーソナライズ・タグ内のTEI変数とは異なり、これらの変数は、JSPコンテナによっては宣言されません。

次の例は、getRecommendationsタグ内のループで使用されているgetNextItemタグを示しています。このループは、getNextItemnullを戻したときに終了します。

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

項目記録および削除タグの説明

次の項では、recordXXXおよびremoveXXXRecordタグの詳細を説明します。項目をリコメンデーション・エンジン・セッションのキャッシュに記録するには、適切なrecordXXXタグを使用します。セッション内で以前に記録された項目を削除する場合は、対応するremoveXXXRecordタグを使用します。キャッシュ内の項目は、周期的にリコメンデーション・エンジン・セッションにフラッシュされます。フラッシュ後に項目を削除した場合は、データベースのラウンドトリップが必要となります。

「項目の記録および削除タグの概要」も参照してください。

recordNavigationパーソナライズ・タグ

このタグを使用して、ナビゲーション項目をリコメンデーション・エンジン・セッション内に記録します。これは、ユーザーがこの項目にナビゲートすることで関心を示したことを記録します。たとえば、ユーザーが興味のあるアイコンを見て、アイコンの横の「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つの使用モードがあります。

または

関連情報は、「入力項目の仕様」を参照してください。

属性

recordPurchaseパーソナライズ・タグ

このタグを使用して、購入項目をリコメンデーション・エンジン・セッション内に記録します。これは、ユーザーが行った購入を記録します。購入項目の削除用タグの詳細は、「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の例には、「買い物カゴ」があります。

recordRatingパーソナライズ・タグ

このタグを使用して、レーティング項目をリコメンデーション・エンジン・セッション内に記録します。これは、この項目に対するユーザーのレーティングに基づきます。レーティング項目の削除用タグの詳細は、「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属性が必要です。

関連情報は、「入力項目の仕様」を参照してください。

属性

他の属性は、recordNavigationタグの場合と同じです。「recordNavigationパーソナライズ・タグ」を参照してください。

recordDemographicパーソナライズ・タグ

このタグを使用して、デモグラフィック項目をリコメンデーション・エンジン・セッション内に記録します。デモグラフィック項目は、特定のユーザーに関する個人的な情報で構成されます。デモグラフィック項目の削除用タグの詳細は、「removeDemographicRecordパーソナライズ・タグ」を参照してください。

このタグは、他のrecordXXXタグとは異なり、typevalueの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タグには、ボディはありません。

属性

removeNavigationRecordパーソナライズ・タグ

このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたナビゲーション項目を削除します。ナビゲーション項目の記録用タグの詳細は、「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パーソナライズ・タグ」を参照してください。

removePurchaseRecordパーソナライズ・タグ

このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録された購入項目を削除します。購入項目の記録用タグの詳細は、「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パーソナライズ・タグ」を参照してください。

removeRatingRecordパーソナライズ・タグ

このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたレーティング項目を削除します。レーティング項目の記録用タグの詳細は、「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パーソナライズ・タグ」を参照してください。

removeDemographicRecordパーソナライズ・タグ

このタグを使用して、以前にこのセッションでリコメンデーション・エンジン・セッション内に記録されたデモグラフィック項目を削除します。デモグラフィック項目の記録用タグの詳細は、「recordDemographicパーソナライズ・タグ」を参照してください。

このタグは、他のremoveXXXRecordタグとは異なり、typevalueの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つの特定の使用例があります。

最初の使用例では、Itemクラスにより次のgetterメソッドが提供されます。

2番目の使用例では、次のsetterメソッドが提供されます。

項目をカテゴリとして定義し、また、カテゴリとして定義済の場合は判定するメソッドもあります。

Itemクラスにより、次のパブリック・コンストラクタが提供されます。

type属性は文字列である必要がありますが、ID属性は、文字列またはlong値のいずれでも指定できます。

Itemクラスは、インタレスト・ディメンションの場合、次のString定数値も定義します。次の値を使用して、リコメンデーション・タグのstoreInterestDimensionIn属性で戻される値と比較します。

パーソナライズ・タグの制限事項

OracleAS Personalizationタグの属性設定に関して、次の制限事項に注意してください。

パーソナライズ・タグ・ライブラリ構成ファイル

OracleAS Personalizationタグ・ライブラリでは、グローバルおよびデフォルトのタグ属性設定を指定するためのpersonalization.xmlという構成ファイルの使用がサポートされています。次の項では、personalization.xmlファイルおよびサポートされている要素について説明します。

personalization.xmlファイル

OracleAS Personalizationタグ・ライブラリでは、personalization.xmlという構成ファイルがサポートされています。これらのファイルは、オプションのタグ属性にデフォルト設定を指定する場合や、デフォルトおよび名前付きのチューニング設定やフィルタ処理設定を指定する場合に便利です。特にチューニングおよびフィルタ処理設定は、作業が複雑で、複数のタグまたは複数のページに設定する必要があり不便なため、personalization.xmlを使用するのが有益です。

特定のアプリケーションに関連する2つのpersonalization.xmlファイルが存在します。

personalization.xmlの要素の説明

この項では、OracleAS Personalizationタグ・ライブラリでサポートされているpersonalization.xml要素のXML DTDについて説明します。これらの要素は、トップレベルの<personalization-config>要素内に存在します。

パーソナライズ・タグは、personalization.xmlファイルをこのDTDに対して検証します。


注意

「パーソナライズ・タグの制限事項」も参照してください。これらの制限事項の一部は、personalization.xml要素およびタグ属性設定に適用されます。 


RecommendationSettings要素

この要素を使用して、maxQuantity(戻されるリコメンデーションの最大数を指定)、getRecommendationsgetCrossSellRecommendationsおよびselectFromHotPicksタグのデフォルト値を設定します。

maxQuantity設定は、正の整数で示される文字数である必要があります。

定義

<!ELEMENT RecommendationSettings EMPTY>
    <!ATTLIST RecommendationSetting  maxQuantity  CDATA #REQUIRED>

RE要素

この要素を使用して、リコメンデーション・エンジンの接続名を指定し、接続します。属性の詳細は、「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"

Tuning要素

この要素を使用して、名前付きチューニング設定を定義します。属性の詳細は、「チューニング設定」を参照してください。

定義

<!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プログラマーズ・ガイド』を参照してください。

DefaultTuning要素

個別のチューニング・タグ属性および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" >

Filtering要素およびCategory要素

これらの要素を使用して、名前付きフィルタ処理設定を定義します。属性の詳細は、「リコメンデーションのフィルタ処理」を参照してください。

フィルタ処理の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 >

DefaultFiltering要素

個別のフィルタ処理タグ属性および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 >

サンプルpersonalization.xmlファイル

<?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" />

戻る 次へ
Oracle
Copyright © 2002, 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引