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

Oracle Application Server Personalizationタグについて

このトピックでは、Oracle Application Server Personalizationで使用するためにOC4Jに付属しているタグ・ライブラリについて説明します。このライブラリを使用する場合は、OracleAS Personalization製品が正しくインストールされていることを前提とします。

このトピックには、次の項目があります。

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

パーソナライズの概要

この項では、パーソナライズの概要を示します。最初に一般的な概念を説明してから、Oracleでの実装の概要を示します。

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

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

パーソナライズの概念

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

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

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

一般的なパーソナライズ・スキームでは、次のいずれかまたはすべてを考慮できます。


注意: 

パーソナライズの概念は、WebサイトやWebアプリケーションに限定されません。CRMアプリケーションなど、適切なデータがありパーソナライズされたリコメンデーションが必要な任意のアプリケーションで、パーソナライズを使用できます。ただし、このドキュメントではWebアプリケーションを対象としています。


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

Oracleが実装し、このトピックで説明するパーソナライズは、自動的かつ暗黙的に選択されるコンテンツを生成する複雑で動的な機能セットです。より単純で静的なWebサイト・メカニズムと混同しないでください。これもパーソナライズと呼ばれることがありますが、実際には単なるカスタマイズです。

多くのサイトでは、関心を持たれる可能性のあるトピックのセット(地域の天気、関心のある株式、お気に入りのスポーツなど)をユーザーに提供し、選択されたトピックに基づいて出力を表示するなどのカスタマイズを提供しています。これにより、配信されるコンテンツがパーソナライズされますが、プロセスは静的で、ユーザーの明示的な関与が必要です。コンテンツのフォーカスは、ユーザーが別のトピックを選択して明示的に変更する機会があるまで変更されません。

パーソナライズは、ユーザーが直接リクエストしなくても、ユーザーのためのコンテンツを自動的に選択します。コンテンツの選択プロセスは隠されています。さらにシステムは、ユーザーの行動を観察してユーザーの習慣に精通するにつれて、将来の行動と関心をより正確に予測できるようになります。

Oracle Application Server Personalizationの概要

OracleAS Personalizationは、Oracleデータベースのデータ・マイニング・アルゴリズムを使用して、ユーザーに対して使用できる最も適切なコンテンツを選択します。リコメンデーションは、一般に過去および現在のユーザーの行動に関する大量のデータを使用して、OracleAS Personalizationリコメンデーション・エンジン(「リコメンデーション・エンジンの概要」で定義しています)により計算されます。このアプローチは、一般的な経験則に基づき、かつシステムでの規則の手動定義を必要とする他のアプローチよりも優れています。

OracleAS Personalizationを使用するアプリケーションは、対象データを提供するOracleAS Personalization自体を使用して、データ収集を制御します。このプロセスにより、アプリケーションは、最小限にしか役立たない大量のデータの収集を回避できます。

OracleAS Personalizationタグ・ライブラリは、HTML、XMLまたはJavaScriptページで使用するための多数のJSP開発者に、この機能を提供します。タグ・インタフェースは、リコメンデーション・エンジンの下位レベル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データベース・スキーマであり、リコメンデーションに対するリクエストを処理する際にマイニング・テーブル・リポジトリから適切なユーザー・プロファイル・データをフェッチします。各エンジンは、次のようなアクティビティを担当します。

リコメンデーション・エンジンは、実行時にリコメンデーション・リクエストを処理し、パーソナライズされたリコメンデーションを生成します。また、セッション中にユーザー・プロファイル・データを収集して、Webサイトで現在のユーザーの行動を追跡します。ユーザーの行動を追跡する機能により、匿名ユーザーと登録済ユーザーの両方に対してセッション固有のパーソナライズが同じように可能になります。

リコメンデーション・エンジンの移入には、背後で実行されるモデルの構築およびリコメンデーション・エンジン・スキーマへのデプロイの手順が関係します。特定のリコメンデーションの計算は、スキーマ内のPL/SQLストアド・プロシージャにより実行されます。

リコメンデーション・エンジン・ファームの概要

リコメンデーション・エンジンは、リコメンデーション・エンジン・ファームの一部である必要があります。ファーム内のすべてのエンジンは、同じモデルとともにロードされ、相互に交換して使用できます。ファームは1つのエンジンから構成することもできますが、ロード・バランシングとフェイルオーバーの目的でファームに複数のエンジンを持つことをお薦めします。希望する効果を実現するために、これらのエンジンは、様々な物理システム上の様々なデータベースに常駐します。

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

OracleAS Personalizationには、リコメンデーション・エンジンで使用するJava APIが用意されています。APIの主な用途は、特定のユーザーに適した項目のリコメンデーションをリクエストすることです。APIは基本的にリコメンデーション・エンジン・データベース・スキーマのストアド・プロシージャへのクライアント・インタフェースとして機能します。リコメンデーションの計算は、JDBC接続プーリングを使用し、ストアド・プロシージャへのJDBCコールを通じて行われます。

Java APIは、データ・コレクション・キャッシュと呼ばれる、ユーザー・プロファイル・データを収集するための短期ストレージも提供します。これらのデータはリコメンデーション・エンジン表に定期的にフラッシュされ、そこからマイニング・テーブル・リポジトリにフラッシュされます。収集時にリコメンデーション・エンジンにユーザー・データを即時に書き込むのではなく、この方法でデータをキャッシュすることにより、必要なJDBCコール数が最小化されます。ただし、リコメンデーションがリクエストされるたびに、これにより同期JDBCコールが生成されることに注意してください。リコメンデーション・リクエストの結果は、一意かつパーソナライズされているため、キャッシュされません。

JSPプログラマに対しては、リコメンデーション・エンジンJava APIの機能はOracleAS Personalizationタグ・ライブラリの機能にラップされているため、このドキュメントではJava APIの詳細は説明しません。タグ・ライブラリは、Java APIを直接使用する場合に明示的に管理する必要のある機能を自動化し、プログラミングを簡便にします。

この項の以降の部分では、OracleAS Personalizationリコメンデーション・エンジンの次の概念および機能の概要を示します。

ビジターと顧客

リコメンデーション・エンジンには、ユーザーの2つの分類があります。


注意: 

匿名ビジターは、セッションの途中(登録時など)で登録済ユーザーに変換できます。「Personalization setVisitorToCustomerタグ」を参照してください。


項目、リコメンデーション、分類、カテゴリ

OracleAS Personalizationでは、項目は、単一のアーティクルまたは情報の最小単位を表す一般概念です。次に、例をいくつか示します。

項目は、複数の方法で使用されます。

インベントリ・システム内の個々のすべての項目は、分類に属する必要があります。OracleAS Personalizationでは、分類は項目の構造編成を表します。通常、項目の編成には、ツリーやツリーのコレクションのような階層構造があり、トランク(幹)にあるより広いグループからリーフ(葉)にある個々の項目に分岐しています。分類内での項目のメンバーシップは排他的ではありません。複数の分類に同じ項目を含めることができます。分類は、長整数型である分類IDで表されます。

カタログまたはWebサイト・ホスティング・アプリケーションは、異なるクライアント・カタログやWebサイトに異なる分類IDを使用することにより、クライアント・データ・セットを区別できます。ユーザーの分類を区別して、各ケースに適切な分類を使用できるようにするために、適切な処理が使用されます。たとえば、www.oracle.comの顧客がDBAまたはWeb開発者であることを示すことができます。これにより、その顧客の将来のアクセスのパーソナライズで使用される分類が判断されます。プロモーション・キャンペーンの提供、バナー、利用できる書籍やトレーニングなどが、Web生産性向上ツール分類やデータベース管理ツール分類から引き出されます。

分類内の個々の項目は、カテゴリにグループ化できます。分類の構造では、カテゴリは、関連項目のグループから構成される中間ノードです。ただし、特定の項目が複数のカテゴリに属することができます。たとえば、『イングリッシュ・ペイシェント』という映画は、「小説の映画化」、「オスカー受賞」、「外国」、「ドラマ」などのカテゴリに属することができます。

一般に、項目はtypeパラメータおよびIDパラメータで一意に識別されますが、レーティング項目にはレーティング値自体のパラメータも必要です。アプリケーションは、各項目のタイプおよびIDを判断するなんらかの種類のインベントリ・システムに依存できます。タイプには、「靴」や「スポーツ・イベント」などがあります。IDは識別番号であり、単一の分類内で2つの項目が同じIDを持つことはできません。

一部のパーソナライズ・フィルタリング設定では、リコメンデーションは、特定の映画タイトルなどの項目ではなく、「ドラマ」などのカテゴリを表すことに注意してください。この場合、リコメンデーションの項目タイプは「カテゴリ」です。「リコメンデーション・フィルタリング」も参照してください。

OracleAS Personalizationタグ・ライブラリは、JSPページでの項目およびリコメンデーションの使用を単純化するために、便利なパブリック・クラス(oracle.jsp.webutil.personalization.Itemクラス)を用意しています。このクラスを使用して、タイプ、IDおよび予測値にアクセスします。詳細は、「項目クラスの説明」を参照してください。

レーティングおよびランキング

リコメンデーションとして返される項目には、次のような予測値があります。

ナビゲーション項目は、ページの表示、リンクの選択、ボタンのクリックなど、Webアプリケーションがヒットとみなすものを表すことができます。

レーティングについて

レーティングは、事前定義済スケールでの顧客の嗜好の数量的メジャーです。たとえば映画の場合、ユーザーがお気に入りの映画に星を5つ付け、それが5.0のレーティングとみなされる5つ星システムを採用できます。将来のセッションで、OracleAS Personalizationは、このユーザーおよび同じような関心とバックグラウンドを持つ他のユーザーに対して、この映画に高い関心度を予測します。ユーザーがある程度好み、非常に好むわけではない映画は、3つ半の星、つまり3.5のレーティングを獲得する場合があります。

最終的なレーティング値は、ユーザーがWebサイトで項目を対話的にレーティングした際に記録されます。レーティングは、必要に応じていくらでもきめ細かくできるように、浮動小数点数になっています。

リコメンデーション・エンジンAPIで返されるレーティング、またはJSPページの場合はリコメンデーション・タグで返されるレーティングは、OracleAS Personalizationアルゴリズムに従った予測値です。

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、Cのランキングは2、Bのランキングは3になります。

項目のランキングは相対的かつ動的です。ランキングは、相互に比較され、特定の順序でソートされたいくつかの項目に対してのみ意味を持つため相対的であり、別の顧客や別の項目に対してランキングすると同じ項目のランキングが変化する場合があるため動的です。

ステートフル・リコメンデーション・エンジン・セッションとステートレス・リコメンデーション・エンジン・セッション

Webアプリケーションは、ステートフルまたはステートレスにすることができます。つまり、アプリケーションは、リクエスト間でサーバー上にユーザー・セッションおよびユーザー固有情報を保持することを選択することも、選択しないこともできます。リコメンデーション・エンジンAPIおよびタグ・ライブラリは、両方の状況を処理するよう設計されています。リクエスト間でサーバー上にユーザー情報を保持することには明白な利点がありますが、スループットを向上させるためにステートレス・アプリケーションを使用する高ボリューム・サイトもあります。

ただし、リコメンデーション・エンジンは、Webアプリケーションのセッション動作に関係なく、リコメンデーション・エンジン・データベース・スキーマで開いているユーザー・セッションを常に追跡することに注意してください。

リコメンデーション・エンジンは、ユーザー・セッションをユーザーIDで追跡します。したがって、一時ユーザーIDを匿名ビジターに割り当てる場合は注意が必要です。すべての匿名ビジターに同じIDを使用し、それらのビジターの行動が追跡された場合、このようなビジターから収集したデータは単一のリコメンデーション・エンジン・セッションに属し、いずれかの匿名ビジターの行動が他のビジターへのリコメンデーションに影響します。各匿名ビジターに、リコメンデーション・エンジン内で一意の一時IDを割り当てることにより、この問題を回避できます。


注意: 

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

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


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

リコメンデーション・エンジン・セッションが確立され、データが移入された後で、アプリケーションはそのセッションにリコメンデーションをリクエストできます。OracleAS Personalizationは、コール側アプリケーションに適切なリコメンデーションを返し、アプリケーションは、ユーザーに何をどのように渡すかを決定します。

JSPページでは、アプリケーションはリコメンデーション・タグの1つを通じてリコメンデーションをリクエストできます。リコメンデーション・エンジンは、チューニングおよびフィルタリングの設定に関して、ユーザー・データに従って提案される項目のセットを返します。OracleAS Personalizationタグ・ライブラリの使用では、タグ属性または構成ファイルでチューニングおよびフィルタリングの設定を指定できます。

リコメンデーションのセットは、JDBCコールを通じてリコメンデーション・エンジン・データベース・スキーマに生成されます。コールに費やされる時間は変化する場合があります。この時間は、処理する必要のあるデータ・レコード数、規則表のサイズなどの要因、ユーザー・プロファイル・データのサイズ、リコメンデーション・リクエストの仕様などの基準に基づきます。リコメンデーションは、アプリケーションが接続しているリコメンデーション・エンジンにデプロイされているパーソナライズ・モデルに従って選択されます。OracleAS Personalizationタグを使用する場合は、startRESessionタグの属性を使用して、使用するリコメンデーション・エンジンを指定します。

クロスセリング・リコメンデーションの場合、アプリケーションは、ユーザーが過去に関心を持った1つ以上の購入またはナビゲーション項目を入力として渡す必要があります。クロスセリング・リコメンデーションは、渡される1つまたは複数の項目に基づき、過去または現在のユーザー・データにも基づく場合があります。

リコメンデーション項目は配列で返され、各リコメンデーションの予測値(「レーティングおよびランキング」で説明したレーティングまたはランキング)および配列全体の関心度値も一緒に返されます。リコメンデーションとして返される項目の場合、関心度は、項目の購入、ナビゲート、レーティングなど、ユーザーがその項目にどの程度の関心を持っているかを示します。

リコメンデーション・エンジンAPIにより、リコメンデーションが返される前に、そのリコメンデーションを分類に基づいてフィルタリングできます。

Personalizationタグ機能の概要

この項では、OracleAS Personalizationタグ・ライブラリの機能の概要を示します。個々のタグの説明および構文は、「Personalizationタグおよびクラスの説明」を参照してください。

タグ・ライブラリの機能の説明は、次のように構成されています。


注意: 

OracleAS Personalizationタグ・ライブラリは、出力形式がHTMLのみであることを想定していません。XMLやJavaScriptなどのその他の形式もサポートされます。


リコメンデーション・エンジン・セッション管理

リコメンデーション・エンジン・セッションの作成と終了の処理は、startRESessionタグおよびendRESessionタグで処理されます。OracleAS Personalizationを使用しているJSPページの場合は、少なくとも1つのstartRESessionタグが実行され、そのタグが、特定のリコメンデーション・エンジン・セッションで最初に検出されるOracleAS Personalizationタグであることを確認する必要があります。

OracleAS Personalizationタグ・ライブラリは、HTTPセッション・オブジェクトを通じて状態情報を保持するステートフル・アプリケーションと状態情報を保持しないステートレス・アプリケーションのどちらもサポートできます。startRESessionsession属性を使用して、使用するモードを指定できます。「true」設定ではタグ・ライブラリがHTTPセッション・オブジェクトを使用でき、タグをHTTPセッションに関与させない場合は「false」設定を使用します。

startRESessionタグのsession属性を「true」に設定すると、JSPのpageディレクティブでsessionを「true」に設定した場合と同様の効果があります。違いは、startRESessionタグの属性を「true」に設定することにより、タグを含むページが影響を受けるだけでなく、同じリコメンデーション・エンジン・セッション内で実行するPersonalizationタグを含む他のページも影響を受けることです。

startRESessionタグが実行された後、PersonalizationタグはWebクライアントとリコメンデーション・エンジン・データベース・セッションの関係を保持し、後続のPersonalizationタグが同じユーザーに適宜適用されるようにします。

リコメンデーション・エンジン・セッションの起動

startRESessionタグは、リコメンデーション・エンジン名とその他の情報を、タグ属性設定とpersonalization.xml構成ファイル設定の組合せから受け取ります。

同じWebクライアントに対してリコメンデーション・エンジン・セッションがすでに開始し、それ以降endRESessionタグが実行されていない場合、startRESessionタグを使用しても操作は何も行われません。この動作は便利です。JSPページが実行される順序についての柔軟性が実現されます。startRESessionタグは、悪影響を与えずにアプリケーションの複数ページに配置できます。

このタグの詳細は、「Personalization startRESessionタグ」を参照してください。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。

ステートフル・アプリケーションの使用

HTTPセッションを使用するステートフル・アプリケーションの場合、セッション情報はJSPの暗黙的なsessionオブジェクトである標準のHttpSessionインスタンスに保持されます。

startRESessionタグが検出され、そのsession属性が「true」(デフォルト)に設定されている場合、セッション・オブジェクトが存在しなければ自動的に作成されます。

ステートレス・アプリケーションの使用

ステートレス・アプリケーションの場合、タグ・ライブラリは、Cookieを使用して内部セッションの追跡を管理します。したがって、ステートレス・アプリケーションを使用する場合、Personalizationタグはクライアント・ブラウザがCookieを受け入れる場合にのみ動作することに注意してください。ブラウザがCookieの拒否を選択していたり、Cookie機能がなかったり(ワイヤレス・プロトコル・ブラウザの場合など)するためにCookieを受け入れない場合は、ステートフル機能(startRESessionsession="true"を設定)が必要です。

リコメンデーション・エンジン・セッションの終了

ステートフル・アプリケーションが特定のリコメンデーション・エンジン・セッションを必要としなくなった場合は、endRESessionタグを使用できます。startRESessionタグの場合と同様に、endRESessionタグを繰り返し実行しても何も操作は行われないため、悪影響を与えずにアプリケーションの複数ページにこのタグを配置できます。

endRESessionタグは、ステートレス・アプリケーションには影響しません。

ステートフル・アプリケーションでのendRESessionタグの使用はオプションの場合がありますが、次の状況では使用する必要があります。

これらの場合は、次のstartRESessionタグの前にendRESessionタグを実行する必要があります。

endRESessionタグの使用は、HTTPセッションが終了する前にアプリケーションでOracleAS Personalizationタグの大量使用を停止し、リコメンデーション・エンジン・リソースを解放できるようにする場合にもお薦めします。

このタグの詳細は、「Personalization endRESessionタグ」を参照してください。


注意: 

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


Personalizationタグ内での項目の使用

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

次の項目について説明します。

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

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


注意: 

セッション中に、記録された項目はリコメンデーション・エンジンに定期的にフラッシュされます。その時点以降も項目の削除は機能しますが、データベースとのやりとりが必要です。REFlushIntervalの関連情報は、「Personalization startRESessionタグ」を参照してください。


購入、ナビゲーションまたはレーティング項目を記録または削除するには、タイプとID(レーティング項目の場合は値も)か、または項目配列とその配列の索引を指定して、記録または削除する項目を指定する必要があります。詳細は、「入力項目の指定」を参照してください。現在のユーザーに暗黙的に適用される個人情報項目を記録または削除するには、AGEと値(44など)のような個人情報タイプを指定する必要があります。「個人情報項目」を参照してください。

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

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

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

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

selectFromHotPicksタグ、getRecommendationsタグおよびgetCrossSellRecommendationsタグ(このドキュメントではリコメンデーション・タグと呼びます)では、項目の配列は、分類全体または分類内のホット・ピック・グループから返されるリコメンデーションのセットです。getCrossSellRecommendationsタグは、リコメンデーションのベースとする購入項目またはナビゲーション項目のセットも入力として受け取る必要があります(クロスセリングと呼ばれます)。

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

evaluateItemsの場合は、評価する特定の項目セットを入力する必要があります。同じ項目の一部またはすべて(場合によっては0個)が返され、関心度に応じてレーティングまたはランキングされます。バックグラウンド情報は、「レーティングおよびランキング」を参照してください。

getRecommendationsタグおよびevaluateItemsタグの場合、結果は特定のユーザーに基づきます。ユーザーIDは、startRESessionタグで指定され、すべての後続のPersonalizationタグに暗黙的に適用されます。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属性を使用し、返される項目数を決定します。

selectFromHotPicksタグ、getRecommendationsタグおよびgetCrossSellRecommendationsタグは、配列内の項目の関心度を示すTEI String変数(NAVIGATIONPURCHASINGまたはRATING)も返すことができます。storeInterestDimensionInタグ属性を使用して、関心度の変数名を指定します。


注意: 

タグ補足情報クラスとスクリプト変数に関する一般情報は、『Oracle Application Server Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。


入力項目の指定

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

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

  1. 目的の各項目のタイプおよびIDを指定し、レーティング項目のレーティング値も指定します。個人情報項目の場合は、タイプおよび値を指定します。

  2. 項目配列と、配列内の目的の各項目の索引を指定します。

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

シナリオ#2および#3の場合、詳細は次の「項目配列の入力」を参照してください。

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

または

または

これらの手順の複数を同時に使用できることに注意してください。getCrossSellRecommendationsタグおよびevaluateItemsタグは、複数のソースからの入力を受け取ることができます。

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

または

項目配列の入力

Item[]オブジェクトの配列をタグに入力する状況では、JSP式で配列を指定する必要があります。このことは、次のいずれのタグにも適用されます。

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


注意: 

ここで示したタグの詳細な構文情報は、「リコメンデーションおよび評価タグの説明」を参照してください。


個人情報項目

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

個人情報項目は、購入項目やナビゲーション項目のようにtypeおよびIDで識別されるのではなく、typeおよびvalueで識別されます。これらは、recordDemographicタグおよびremoveDemographicRecordタグに対するただ2つの属性です。MTR.MTR_CUSTOMERS表のマイニング・テーブル・リポジトリの列として存在する、いくつかの事前定義済タイプがあります。

ATTRIBUTE1からATTRIBUTE50までの50個のカスタマイズ可能な列もあります。

カスタマイズ可能なタイプを使用するには、次のことを行う必要があります。

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

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

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

Oracle Application Serverリリース2では、項目記録タグに、受信モードという動作モードの1つを使用できます。このモードでは、購入する品目やナビゲートするURLなどをユーザーが選択すると、そのユーザーに対して表示されるページ(受信側ページと呼びます)には、項目を記録するrecordXXXタグが含まれます。

一般的な例として、ページでgetRecommendationsタグを使用し、順番に表示されるリコメンデーションのリストを生成するとします。各リコメンデーション項目には、ユーザーが詳細情報を取得するために選択できる詳細リンクと、ユーザーが品目を購入するために選択できる購入リンクがあります。ユーザーが詳細を選択してアクセスするページに、recordNavigationタグを配置できます。また、ユーザーが購入を選択してアクセスするページ(たとえば、購入確認ページなど)に、recordPurchaseタグを配置できます。どちらの場合も、項目のタイプとIDは、その項目専用の受信側ページですでに既知である可能性があります。

同様に、ユーザーが個人情報を入力するJSPページにrecordDemographicタグを配置できます。たとえば、ユーザーが婚姻状況、年齢および所得を入力できるページなどがあります。ユーザーが情報を入力すると(たとえば、年齢が44歳で年収が$50,000の独身者を想定します)、HTMLフォームの背後のアクションのターゲットは、そのプロファイル用に調整された広告ページです。このページには、タイプMARITAL_STATUSAGEおよびPERSONAL_INCOMErecordDemographicタグがあります。1つのページに複数のrecordDemographicタグを使用できます。

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

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

前に概説したように、selectFromHotPicksタグ、getRecommendationsタグ、getCrossSellRecommendationsタグおよびevaluateItemsタグは、すべて項目の配列を返します。この項では、返されるリコメンデーションを入念に調整するために使用できるチューニングおよびフィルタリング設定と、リコメンデーションをソートするための設定に関する情報を示します。ただし、項目出力は常に項目入力のセットから選択されるため、フィルタリング設定はevaluateItemsタグには適用されません。

この項の構成は、次のとおりです。

チューニング設定

いくつかのチューニング設定は、リコメンデーション・エンジンがリコメンデーションを返す際に使用する修飾とロジックの一部を決定します。各設定には、ここで説明する方法のいずれかで決定できる値が必要です。

これらの設定は、表1にまとめるように、selectFromHotPicksタグ、getRecommendationsタグ、getCrossSellRecommendationsタグおよびevaluateItemsタグのtuningXXX属性で指定できます。または、tuningName属性を使用して、アプリケーション・レベルのpersonalization.xmlファイル(最初に選択)またはサーバー全体のpersonalization.xmlファイル内の指定した<Tuning>要素から設定を取得できます。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。

属性設定がない場合、または<Tuning>要素がない場合は、次の手順の順序に従ってデフォルト値が選択されます。

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

  2. サーバー全体のpersonalization.xmlファイルの<DefaultTuning>要素に従います。

  3. 次のハードコードされた設定に従います。

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


注意: 

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


表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管理者ガイド』を参照してください。

リコメンデーション・フィルタリング

チューニング設定に加えて、リコメンデーション・リクエストに対して指定できるフィルタリング設定があります。各設定には、ここで説明する方法のいずれかで決定できる値が必要です。

これらの設定は、getRecommendationsタグ、getCrossSellRecommendationsタグおよびselectFromHotPicksタグのfilteringXXX属性で指定できます。(フィルタリングは、evaluateItemsタグには関係しません。)または、filteringName属性を使用して、アプリケーション・レベルのpersonalization.xmlファイル(最初に選択)またはサーバー全体のpersonalization.xmlファイル内の指定した<Filtering>要素から設定を取得できます。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。

属性設定がない場合または<Filtering>要素がない場合は、アプリケーション・レベルのpersonalization.xmlファイル(最初に選択)またはサーバー全体のpersonalization.xmlファイル内の<DefaultFiltering>要素からデフォルト値が選択されます。

次に、フィルタリング・パラメータを示します。


注意: 

filteringMethodALL_ITEMSまたはALL_CATEGORIESの場合は、filteringCategories設定を指定しないでください。


表2 リコメンデーションをリクエストするためのフィルタリング・メソッド 
フィルタリング・メソッド 説明

ALL_ITEMS

分類内のすべてのリーフの項目を推奨します。

INCLUDE_ITEMS

filteringCategoriesで指定されたカテゴリに属する項目を推奨します。

EXCLUDE_ITEMS

filteringCategoriesで指定されたカテゴリに属さない分類内の項目を推奨します。

SUBTREE_ITEMS

filteringCategoriesで指定されたカテゴリのサブツリーに属する項目を推奨します。

ALL_CATEGORIES

分類内のすべてのカテゴリを推奨します。

INCLUDE_CATEGORIES

filteringCategoriesで指定されたカテゴリを推奨します。

EXCLUDE_CATEGORIES

filteringCategoriesで指定されていない分類内のカテゴリを推奨します。

SUBTREE_CATEGORIES

filteringCategoriesで指定されたカテゴリのサブツリーからのカテゴリを推奨します。

CATEGORY_LEVEL

filteringCategoriesで指定されたカテゴリと同じレベルのカテゴリを推奨します。

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

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

ソート順

各項目のpredictionフィールド(レーティングまたはランキング)に従って、返される項目をソートできます。このフィールドの使用方法は、「レーティングおよびランキング」を参照してください。

selectFromHotPicksタグ、getRecommendationsタグ、getCrossSellRecommendationsタグまたはevaluateItemsタグのsortOrder属性を使用して、ASCENDDESCENDまたはNONE(デフォルト)のソート順を指定します。昇順は最も一致するものから順にリストし、降順はその逆の順序でリストします。5段階ランキング項目では、1が最高ランクであるため、これらの項目の昇順は1、2、3、4、5の順になります。5段階レーティング項目では、数値が大きいほど高いレーティングを意味するため、これらの項目の昇順は4.5、3.9、2.5、2.2、1.8のような順になります。

Personalizationタグおよびクラスの説明

この項では、OracleAS PersonalizationタグおよびItemパブリック・クラスの構文と使用方法を詳細に説明し、最後にタグ制限について説明します。この項の構成は、次のとおりです。

OracleAS Personalizationタグ・ライブラリを使用するには、ファイルojsputil.jarがインストール済で、クラスパスに存在していることを確認します。このファイルは、OC4Jに含まれています。oreapi-rt.jarファイルにあるリコメンデーション・エンジンAPIのクラスも必要です。「Business Intelligence」オプションを指定してOracle Application Serverをインストールした場合、このファイルは[SRCHOME]/dmt/jlibディレクトリにインストールされます。このファイルを、アプリケーションからアクセス可能な場所にコピーしてください。

タグ・ライブラリ・ディスクリプタ・ファイルpersonalization.tldが、アプリケーションとともにデプロイされている必要があります。また、ライブラリを使用するJSPページには、適切なtaglibディレクティブが存在する必要があります。OracleASのインストール時、TLDファイルは、予約済のタグ・ライブラリ・ディレクトリに置かれます。taglibディレクティブと予約済のタグ・ライブラリ・ディレクトリの詳細は、『Oracle Application Server Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。


注意: 

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

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

  • true」や「false」など、サポートされる属性設定の数が固定の場合、エントリの大文字と小文字は区別されません。


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

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

この項では、リコメンデーション・エンジン・セッションを開始、終了および管理するための次のタグについて記載します。

Personalization startRESessionタグ

この項では、リコメンデーション・エンジン・セッションの開始に使用するstartRESessionタグの構文と属性について説明します。関連情報は、「リコメンデーション・エンジン・セッション管理」も参照してください。

startRESessionタグは、同じリコメンデーション・エンジン・セッション内で実行される他のすべてのOracleAS Personalizationタグよりも前に実行する必要があります。


注意: 

「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が既存の接続の名前と一致する場合、REURLRESchemaREPasswordRECacheSizeおよびREFlushIntervalの設定は余分であり、無視されます。


属性

Personalization endRESessionタグ

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

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

構文


<op:endRESession />

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

Personalization setVisitorToCustomerタグ

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

customerID値はリクエスト時属性であり、アプリケーションで指定する必要があります。

構文


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

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

属性

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

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

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

Personalization getRecommendationsタグ

このタグを使用して、購入、ナビゲーションまたはレーティングのリコメンデーション・セットをリクエストします。特定の分類からの項目が考慮され、指定に従ってチューニングとフィルタリングが行われます。リコメンデーションは、次の型の配列に返されます。


oracle.jsp.webutil.personalization.Item[]

getCrossSellRecommendationsevaluateItemsなどの他のタグではリコメンデーションの基礎として使用する項目の入力を必要としますが、getRecommendationsタグはこれを必要としません。リコメンデーションは、特定の項目ではなくユーザーIDとプロファイル(ユーザー・セッションと履歴データ)に基づきます。

結果のリコメンデーションは、オプションとして、タグのstoreResultsIn属性で指定された変数名でItem[]型のTEI変数に格納できます。リコメンデーションは、getRecommendationsタグ内で暗黙的にも使用できます。オプションとして、項目に目的の処理を行うために、ネストしたgetNextItemタグでタグ・ボディを使用できます。「Personalization getNextItemタグ」を参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


<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タグの例について、「Personalization getNextItemタグ」も参照してください。

Personalization getCrossSellRecommendationsタグ

getRecommendationsタグと同様に、getCrossSellRecommendationsタグは、購入、ナビゲーションまたはレーティングに対するリコメンデーション・セットをItem[]型の配列に返します。特定の分類からの項目が考慮され、指定に従ってチューニングとフィルタリングが行われます。

ただし、getCrossSellRecommendationsを使用するには、結果のリコメンデーションの基礎として使用される、ユーザーが過去に関心を持った購入項目またはナビゲーション項目のセットを入力する必要があります。項目は、すべて同じ分類からのものである必要があります。

項目は、指定した項目配列、またはネストしたforItemタグのあるタグ・ボディで入力できます。詳細は、「入力項目の指定」を参照してください。「Personalization forItemタグ」も参照してください。

getCrossSellRecommendationsタグからのリコメンデーションは、タグのstoreResultsIn属性で指定された変数名でItem[]型のTEI変数に格納されます。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

属性の使用方法に関する注意

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

属性

getCrossSellRecommendationsタグの他のすべての属性は、「Personalization getRecommendationsタグ」で説明したgetRecommendationsタグに対する場合と同じように使用されますが、属性の使用方法に関する注意で示した制限があり、またgetCrossSellRecommendationsタグではstoreResultsInが必須属性である点が異なります。

チューニング、フィルタリングおよびソートの追加情報は、「チューニング設定」「リコメンデーション・フィルタリング」および「ソート順」を参照してください。

次の例では、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タグの例について、「Personalization forItemタグ」も参照してください。

Personalization selectFromHotPicksタグ

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

selectFromHotPicksがユーザーIDとユーザー・プロファイルを考慮しないという点を除き、このタグは、fromHotPicksGroups設定を指定したgetRecommendationsタグと基本的に同じ動作をします。このタグの詳細は、「Personalization getRecommendationsタグ」を参照してください。

オプションとして、タグのstoreResultsIn属性で指定した変数名で、Item[]型のTEI変数に結果のリコメンデーションを格納できます。リコメンデーションは、selectFromHotPicksタグ内で暗黙的にも使用できます。オプションとして、項目に目的の処理を行うために、ネストしたgetNextItemタグでタグ・ボディを使用できます。「Personalization getNextItemタグ」を参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

属性の使用方法に関する注意

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

属性

他のすべての属性は、「Personalization getRecommendationsタグ」で説明したgetRecommendationsタグに対する場合と同じように使用しますが、「属性の使用方法に関する注意」で示した制限があります。

チューニング、フィルタリングおよびソートの追加情報は、「チューニング設定」「リコメンデーション・フィルタリング」および「ソート順」を参照してください。

ネストしたgetNextItemタグを使用するselectFromHotPicksタグの例は、「Personalization getNextItemタグ」を参照してください。

Personalization evaluateItemsタグ

evaluateItemsタグは、タグへの入力である項目セットの評価に使用します。項目は、すべて同じ分類からのものである必要があります。PURCHASINGまたはNAVIGATIONの関心度の場合は、項目がランキングされます。RATINGの関心度の場合は、項目がレーティングされます。評価された項目のサブセット(tuningDataSource設定の影響に応じて、0個からすべての項目)が、Item[]型のTEI配列変数に返されます。storeResultsIn属性で変数の名前を指定する必要があります。配列内の各項目について、prediction属性には、ランキングまたはレーティング値が含まれます。

項目のレーティングおよびランキングのバックグラウンド情報は、「レーティングおよびランキング」を参照してください。

項目は、指定した項目配列、またはネストしたforItemタグのあるタグ・ボディで入力できます。詳細は、「入力項目の指定」を参照してください。「Personalization forItemタグ」も参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

属性の使用方法に関する注意

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

属性

他のすべてのevaluateItems属性は、「Personalization getRecommendationsタグ」で説明したgetRecommendationsタグに対する場合と同じように使用しますが、属性の使用方法に関する注意で示した制限があり、またevaluateItemsタグではstoreResultsInが必須属性である点が異なります。

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

この例は、販売品目を入力として受け取り、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)); %>

Personalization forItemタグ

このタグを使用して、getCrossSellRecommendationsタグまたはevaluateItemsタグに入力するために個々の項目を指定します。

forItemタグの使用方法に関する概念情報は、「入力項目の指定」を参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

Personalization getNextItemタグ

オプションとして、getRecommendationsまたはselectFromHotPicksタグ・ボディ内でネストしたgetNextItemタグを使用して、外側のタグから返されるリコメンデーションにアクセスできます。(代替方法として、getRecommendationsタグまたはselectFromHotPicksタグのstoreResultsIn属性を通じて項目にアクセスすることもできます。)

getNextItemタグは、初めて実行された際に最初の項目にアクセスし、その後のgetNextItemの実行では項目配列を1つずつ進み、getNextItemを実行するたびに次の項目が取得されます。項目配列の終わりに達すると、タグは各タグ属性に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タグのスコープ内で参照できる必要があります。他のPersonalizationタグの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タグを使用します。キャッシュ内の項目は、リコメンデーション・エンジン・セッションに定期的にフラッシュされます。その時点より後に項目を削除するには、データベースとのやりとりが必要です。

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

ここでは次のタグについて説明します。

Personalization recordNavigationタグ

このタグは、リコメンデーション・エンジン・セッションにナビゲーション項目を記録する場合に使用します。これは、ユーザーが項目をナビゲートすることにより項目内の関心事を示したことを記録します。たとえば、ユーザーがなんらかの関心事を表すアイコンを見て、アイコンの横にある「Tell Me More」ボタンをクリックする場合があります。ナビゲーション項目を削除するタグの詳細は、「Personalization removeNavigationRecordタグ」を参照してください。

startRESessionタグのdisableRecording属性を「true」に設定することにより、recordNavigationタグのアクションを無効にできます。詳細は、「Personalization startRESessionタグ」を参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

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

属性の使用方法に関する注意

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

または

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

属性

Personalization recordPurchaseタグ

このタグは、リコメンデーション・エンジン・セッションに購入項目を記録する場合に使用します。ユーザーが行った購入を記録します。購入項目を削除するタグの詳細は、「Personalization removePurchaseRecordタグ」を参照してください。

startRESessionタグのdisableRecording属性を「true」に設定することにより、recordPurchaseタグのアクションを無効にできます。詳細は、「Personalization startRESessionタグ」を参照してください。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

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

属性の使用方法に関する注意

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

または

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

属性

属性は、recordNavigationタグの属性と同じです。「Personalization 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は、リコメンデーションのリストを取得して、各項目の購入リンクとともに表示します。項目配列は、使用する後続のページのsessionオブジェクトに格納されます。

ページ2は、ユーザーが特定のリコメンデーションを購入するためにリンクを選択した際に実行されます。項目リストはセッション属性から取得されます。選択された項目の索引はリクエスト・パラメータから取得されます。ページ2は、たとえばショッピング・カート・ページなどです。

Personalization recordRatingタグ

このタグは、リコメンデーション・エンジン・セッションにレーティング項目を記録する場合に使用します。これは項目のユーザー・レーティングに基づいています。レーティング項目を削除するタグの詳細は、「Personalization removeRatingRecordタグ」を参照してください。

このタグは、値(レーティング値)も指定する必要があるという点で、recordNavigationrecordPurchaseとは異なります。


注意: 

「Personalizationタグの制約」も参照してください。


構文


<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タグの属性と同じです。「Personalization recordNavigationタグ」を参照してください。

Personalization recordDemographicタグ

このタグは、リコメンデーション・エンジン・セッションに個人情報項目を記録する場合に使用します。個人情報項目は、特定のユーザーに関する個人情報の断片から構成されます。個人情報項目を削除するタグの詳細は、「Personalization removeDemographicRecordタグ」を参照してください。

このタグは、typeおよびvalueの2つの属性しか持たないという点で、他のrecordXXXタグとは異なります。type属性は、「AGE」など、項目に含まれる情報の種類を示します。value属性には、「44」などの対応する値が含まれます。


注意: 

「Personalizationタグの制約」も参照してください。


構文


<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タグにボディはありません。

属性

Personalization removeNavigationRecordタグ

このタグは、セッションで以前にリコメンデーション・エンジン・セッションに記録したナビゲーション項目を削除する場合に使用します。ナビゲーション項目を記録するタグの詳細は、「Personalization recordNavigationタグ」を参照してください。

項目を削除するには、項目が記録されたのと同じリコメンデーション・エンジン・セッション中にremoveNavigationRecordタグを使用する必要があります。セッション・キャッシュは、1つのセッション中にリコメンデーション・エンジン・データベース・スキーマに定期的にフラッシュされます。項目がフラッシュされた後でその項目を削除する場合は、削除タグを実行するためにデータベースとのやりとりが必要です。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

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

属性の使用方法に関する注意

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

または

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

属性

属性は、recordNavigationタグの属性と同じです。「Personalization recordNavigationタグ」を参照してください。

Personalization removePurchaseRecordタグ

このタグは、セッションで以前にリコメンデーション・エンジン・セッションに記録した購入項目を削除する場合に使用します。購入項目を記録するタグの詳細は、「Personalization recordPurchaseタグ」を参照してください。

項目を削除するには、項目が記録されたのと同じリコメンデーション・エンジン・セッション中にremovePurchaseRecordタグを使用する必要があります。セッション・キャッシュは、1つのセッション中にリコメンデーション・エンジン・データベース・スキーマに定期的にフラッシュされます。項目がフラッシュされた後でその項目を削除する場合は、削除タグを実行するためにデータベースとのやりとりが必要です。


注意: 

「Personalizationタグの制約」も参照してください。


構文


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

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

属性の使用方法に関する注意

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

または

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

属性

属性は、recordNavigationタグの属性と同じです。「Personalization recordNavigationタグ」を参照してください。

Personalization removeRatingRecordタグ

このタグは、セッションで以前にリコメンデーション・エンジン・セッションに記録したレーティング項目を削除する場合に使用します。レーティング項目を記録するタグの詳細は、「Personalization recordRatingタグ」を参照してください。

このタグは、値(レーティング値)も指定する必要があるという点で、removeNavigationRecordremovePurchaseRecordとは異なります。

項目を削除するには、項目が記録されたのと同じリコメンデーション・エンジン・セッション中にremoveRatingRecordタグを使用する必要があります。セッション・キャッシュは、1つのセッション中にリコメンデーション・エンジン・データベース・スキーマに定期的にフラッシュされます。項目がフラッシュされた後でその項目を削除する場合は、削除タグを実行するためにデータベースとのやりとりが必要です。


注意: 

「Personalizationタグの制約」も参照してください。


構文


<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タグの属性と同じです。「Personalization recordNavigationタグ」を参照してください。

Personalization removeDemographicRecordタグ

このタグは、セッションで以前にリコメンデーション・エンジン・セッションに記録した個人情報項目を削除する場合に使用します。個人情報項目を記録するタグの詳細は、「Personalization recordDemographicタグ」を参照してください。

このタグは、typeおよびvalueの2つの属性しか持たないという点で、他のremoveXXXRecordタグとは異なります。type属性は、「AGE」など、項目に含まれる情報の種類を示します。value属性には、「44」などの対応する値が含まれます。

項目を削除するには、項目が記録されたのと同じリコメンデーション・エンジン・セッション中にremoveDemographicRecordタグを使用する必要があります。セッション・キャッシュは、1つのセッション中にリコメンデーション・エンジン・データベース・スキーマに定期的にフラッシュされます。項目がフラッシュされた後でその項目を削除する場合は、削除タグを実行するためにデータベースとのやりとりが必要です。


注意: 

「Personalizationタグの制約」も参照してください。


構文


<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タグの属性と同じです。「Personalization recordDemographicタグ」を参照してください。

項目クラスの説明

OracleAS Personalizationタグ・ライブラリは、JSPページでの項目、カテゴリおよびリコメンデーションの使用を促進するために、次の便利なラッパー・クラスを用意しています。


oracle.jsp.webutil.personalization.Item

タグ・ハンドラは、必要に応じてItemインスタンスを作成します。Itemインスタンスを直接使用し、場合によっては作成する必要のある次の2つのシナリオがあります。

Itemクラスは、最初のシナリオに対して次のゲッター・メソッドを用意しています。

このクラスは、2番目のシナリオに対して次のセッター・メソッドを用意しています。

項目をカテゴリとして定義するメソッド、およびすでにカテゴリとして定義されているかどうかを判断するメソッドもあります。

Itemクラスには、次のパブリック・コンストラクタが用意されています。

type属性は文字列である必要があります。ID属性は、文字列またはlong値にすることができます。

Itemクラスは、関心度に対して次のString定数も定義します。これらの値は、リコメンデーション・タグのstoreInterestDimensionIn属性で返される値との比較に使用します。

Personalizationタグの制約

OracleAS Personalizationタグに対する属性設定について、次の制約に注意してください。

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タグは、DTDと照らしてpersonalization.xmlファイルを検証します。


注意: 

「Personalizationタグの制約」も参照してください。これらの制限の一部は、personalization.xml要素およびタグ属性設定に適用されます。


RecommendationSettings要素

この要素を使用して、返すことのできるリコメンデーションの最大数を表すmaxQuantityのデフォルト値を、getRecommendationsタグ、getCrossSellRecommendationsタグおよびselectFromHotPicksタグに対して設定します。

maxQuantity設定値は、正の整数を表す文字列である必要があります。

定義


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

RE要素

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

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

フィルタリング要素とカテゴリ要素

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

フィルタリングName属性を使用して、Personalizationタグから参照される一意の名前を提供します。

1つ以上の<Category>要素は、AllItemsサブ要素およびAllCategoriesサブ要素を除くフィルタリングサブ要素内にネストする必要があります。<Category>要素の内容は、長整数型を表す文字列である必要があります。

定義


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