Oracle Application Server Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g(9.0.4) |
|
このトピックでは、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サイト・メカニズムと混同しないでください。これもパーソナライズと呼ばれることがありますが、実際には単なるカスタマイズです。
多くのサイトでは、関心を持たれる可能性のあるトピックのセット(地域の天気、関心のある株式、お気に入りのスポーツなど)をユーザーに提供し、選択されたトピックに基づいて出力を表示するなどのカスタマイズを提供しています。これにより、配信されるコンテンツがパーソナライズされますが、プロセスは静的で、ユーザーの明示的な関与が必要です。コンテンツのフォーカスは、ユーザーが別のトピックを選択して明示的に変更する機会があるまで変更されません。
パーソナライズは、ユーザーが直接リクエストしなくても、ユーザーのためのコンテンツを自動的に選択します。コンテンツの選択プロセスは隠されています。さらにシステムは、ユーザーの行動を観察してユーザーの習慣に精通するにつれて、将来の行動と関心をより正確に予測できるようになります。
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つのエンジンから構成することもできますが、ロード・バランシングとフェイルオーバーの目的でファームに複数のエンジンを持つことをお薦めします。希望する効果を実現するために、これらのエンジンは、様々な物理システム上の様々なデータベースに常駐します。
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を割り当てることにより、この問題を回避できます。
リコメンデーション・エンジン・セッションが確立され、データが移入された後で、アプリケーションはそのセッションにリコメンデーションをリクエストできます。OracleAS Personalizationは、コール側アプリケーションに適切なリコメンデーションを返し、アプリケーションは、ユーザーに何をどのように渡すかを決定します。
JSPページでは、アプリケーションはリコメンデーション・タグの1つを通じてリコメンデーションをリクエストできます。リコメンデーション・エンジンは、チューニングおよびフィルタリングの設定に関して、ユーザー・データに従って提案される項目のセットを返します。OracleAS Personalizationタグ・ライブラリの使用では、タグ属性または構成ファイルでチューニングおよびフィルタリングの設定を指定できます。
リコメンデーションのセットは、JDBCコールを通じてリコメンデーション・エンジン・データベース・スキーマに生成されます。コールに費やされる時間は変化する場合があります。この時間は、処理する必要のあるデータ・レコード数、規則表のサイズなどの要因、ユーザー・プロファイル・データのサイズ、リコメンデーション・リクエストの仕様などの基準に基づきます。リコメンデーションは、アプリケーションが接続しているリコメンデーション・エンジンにデプロイされているパーソナライズ・モデルに従って選択されます。OracleAS Personalizationタグを使用する場合は、startRESession
タグの属性を使用して、使用するリコメンデーション・エンジンを指定します。
クロスセリング・リコメンデーションの場合、アプリケーションは、ユーザーが過去に関心を持った1つ以上の購入またはナビゲーション項目を入力として渡す必要があります。クロスセリング・リコメンデーションは、渡される1つまたは複数の項目に基づき、過去または現在のユーザー・データにも基づく場合があります。
リコメンデーション項目は配列で返され、各リコメンデーションの予測値(「レーティングおよびランキング」で説明したレーティングまたはランキング)および配列全体の関心度値も一緒に返されます。リコメンデーションとして返される項目の場合、関心度は、項目の購入、ナビゲート、レーティングなど、ユーザーがその項目にどの程度の関心を持っているかを示します。
リコメンデーション・エンジンAPIにより、リコメンデーションが返される前に、そのリコメンデーションを分類に基づいてフィルタリングできます。
この項では、OracleAS Personalizationタグ・ライブラリの機能の概要を示します。個々のタグの説明および構文は、「Personalizationタグおよびクラスの説明」を参照してください。
タグ・ライブラリの機能の説明は、次のように構成されています。
リコメンデーション・エンジン・セッションの作成と終了の処理は、startRESession
タグおよびendRESession
タグで処理されます。OracleAS Personalizationを使用しているJSPページの場合は、少なくとも1つのstartRESession
タグが実行され、そのタグが、特定のリコメンデーション・エンジン・セッションで最初に検出されるOracleAS Personalizationタグであることを確認する必要があります。
OracleAS Personalizationタグ・ライブラリは、HTTPセッション・オブジェクトを通じて状態情報を保持するステートフル・アプリケーションと状態情報を保持しないステートレス・アプリケーションのどちらもサポートできます。startRESession
のsession
属性を使用して、使用するモードを指定できます。「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を受け入れない場合は、ステートフル機能(startRESession
にsession="true"
を設定)が必要です。
ステートフル・アプリケーションが特定のリコメンデーション・エンジン・セッションを必要としなくなった場合は、endRESession
タグを使用できます。startRESession
タグの場合と同様に、endRESession
タグを繰り返し実行しても何も操作は行われないため、悪影響を与えずにアプリケーションの複数ページにこのタグを配置できます。
endRESession
タグは、ステートレス・アプリケーションには影響しません。
ステートフル・アプリケーションでのendRESession
タグの使用はオプションの場合がありますが、次の状況では使用する必要があります。
これらの場合は、次のstartRESession
タグの前にendRESession
タグを実行する必要があります。
endRESession
タグの使用は、HTTPセッションが終了する前にアプリケーションでOracleAS Personalizationタグの大量使用を停止し、リコメンデーション・エンジン・リソースを解放できるようにする場合にもお薦めします。
このタグの詳細は、「Personalization endRESessionタグ」を参照してください。
注意: |
OracleAS Personalizationタグ・ライブラリには、項目を操作するためのタグがいくつか用意されています。これには、ユーザーの行動情報を記録するタグ、以前に記録したユーザー行動情報を削除するタグ、項目をリコメンデーションとして出力するタグおよび評価してレーティングまたはランキングする項目のセットを入力するタグがあります。
次の項目について説明します。
次のタグは、リコメンデーション・エンジン・セッション・キャッシュにデータ項目を記録するため、またはセッションで以前に記録した項目を削除するためのタグです。
recordNavigation
および removeNavigationRecord
recordPurchase
および removePurchaseRecord
recordRating
および removeRatingRecord
recordDemographic
および removeDemographicRecord
注意: セッション中に、記録された項目はリコメンデーション・エンジンに定期的にフラッシュされます。その時点以降も項目の削除は機能しますが、データベースとのやりとりが必要です。 |
購入、ナビゲーションまたはレーティング項目を記録または削除するには、タイプとID(レーティング項目の場合は値も)か、または項目配列とその配列の索引を指定して、記録または削除する項目を指定する必要があります。詳細は、「入力項目の指定」を参照してください。現在のユーザーに暗黙的に適用される個人情報項目を記録または削除するには、AGE
と値(44など)のような個人情報タイプを指定する必要があります。「個人情報項目」を参照してください。
通常、remove
XXX
Record
タグを使用する必要はほとんどありません。受信側ページにrecord
XXX
タグを配置する場合、removePurchaseRecord
タグまたはremoveNavigationRecord
タグを使用する必要はありません。removeRatingRecord
タグおよびremoveDemographicRecord
タグの使用は、初期入力が記録された後にユーザーが考えを変えたような状況にのみ必要です。関連情報は、「項目記録タグの使用モード」を参照してください。
タグ情報の詳細は、「項目の記録と削除のタグの説明」を参照してください。
次のタグは、項目の配列をリコメンデーションとして返します。
selectFromHotPicks
タグ、getRecommendations
タグおよびgetCrossSellRecommendations
タグ(このドキュメントではリコメンデーション・タグと呼びます)では、項目の配列は、分類全体または分類内のホット・ピック・グループから返されるリコメンデーションのセットです。getCrossSellRecommendations
タグは、リコメンデーションのベースとする購入項目またはナビゲーション項目のセットも入力として受け取る必要があります(クロスセリングと呼ばれます)。
ホット・ピックは、プロモーション項目またはその他の特別に選択した項目グループであり、選択するピックはタグ属性で指定できます。ホット・ピックの詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。
evaluateItems
の場合は、評価する特定の項目セットを入力する必要があります。同じ項目の一部またはすべて(場合によっては0個)が返され、関心度に応じてレーティングまたはランキングされます。バックグラウンド情報は、「レーティングおよびランキング」を参照してください。
getRecommendations
タグおよびevaluateItems
タグの場合、結果は特定のユーザーに基づきます。ユーザーIDは、startRESession
タグで指定され、すべての後続のPersonalizationタグに暗黙的に適用されます。getCrossSellRecommendations
タグは、入力項目のセットに依存します。
次に、各リコメンデーション・タグに関する追加情報を示します。タグの詳細な説明は、「リコメンデーションおよび評価タグの説明」を参照してください。
selectFromHotPicks
: 返される項目は、ホット・ピック・グループのセットからの項目です。hotPicksGroups
属性を使用して、どのホット・ピック・グループから選択するかを指定します。結果はユーザーに依存しないため、ある意味でこれはOracleAS Personalizationタグ・ライブラリの非パーソナル・タグです。ただし、初回ビジターへのプロモーションの表示や、特定地域または関心グループなどに対するパーソナライズ・アプリケーションで役立つ場合もあります。
getRecommendations
: 返される項目はユーザーに基づきますが、fromHotPicksGroups
属性で指定したホット・ピック・グループからの項目である必要があることも指定できます。
getCrossSellRecommendations
: 返される項目は、入力項目に基づきます。返される項目は、fromHotPicksGroups
属性で指定したホット・ピック・グループのセットからの項目である必要があることも指定できます。入力項目は、あるユーザーの以前の関心と想定されます。このタグの機能は、ユーザーが過去に入力項目を購入またはナビゲートした場合、そのユーザーが将来最も関心を持ちそうな追加項目、つまり購入またはナビゲートする追加項目は何であるかという質問に(関心度に従って)答えることです。
項目を入力として受け取るタグ(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
変数(NAVIGATION
、PURCHASING
またはRATING
)も返すことができます。storeInterestDimensionIn
タグ属性を使用して、関心度の変数名を指定します。
注意: タグ補足情報クラスとスクリプト変数に関する一般情報は、『Oracle Application Server Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。 |
項目を入力する必要のある一般的な状況は2つあります。
getCrossSellRecommendations
タグまたはevaluateItems
タグに入力項目を提供する場合
getCrossSellRecommendations
タグまたはevaluateItems
タグに加えて、これには1つ以上のネストしたforItem
タグが関係することがあります。forItem
タグは、目的の入力項目の選択に使用されます。
これには、record
XXX
タグまたはremove
XXX
Record
タグが関係します。
項目は、次の一般的な方法で指定できます。
record
XXX
タグおよびremove
XXX
Record
タグには関係しません)。
シナリオ#2および#3の場合、詳細は次の「項目配列の入力」を参照してください。
1つ以上の項目を、次のようにgetCrossSellRecommendations
タグまたはevaluateItems
タグに入力できます。
または
または
これらの手順の複数を同時に使用できることに注意してください。getCrossSellRecommendations
タグおよびevaluateItems
タグは、複数のソースからの入力を受け取ることができます。
次のようにrecord
XXX
タグまたはremove
XXX
Record
タグに項目を指定できます。
type
属性とID
属性、およびrecordRating
またはremoveRatingRecord
のvalue
属性を使用して、項目を指定します(前述のシナリオ1)。または、recordDemographic
またはremoveDemographicRecord
の場合は、type
属性およびvalue
属性を使用します。
または
Item[]
オブジェクトの配列をタグに入力する状況では、JSP式で配列を指定する必要があります。このことは、次のいずれのタグにも適用されます。
inputItemList
属性を使用して配列全体を入力する場合は、getCrossSellRecommendations
またはevaluateItems
itemList
属性およびindex
属性を使用して配列を入力し、使用する1つの要素を指定する場合は、forItem
(getCrossSellRecommendations
またはevaluateItems
の内部)、recordPurchase
、recordNavigation
、recordRating
、removePurchaseRecord
、removeNavigationRecord
またはremoveRatingRecord
配列は、次の方法で指定できます。
<% Item[] myList = newItem[] {newItem("shoes", 1)}; %> <op:evaluateItems inputItemList="<%=myList %> .../>
<op:getRecommendations storeResultsIn="myRecs" .../> <!-- First tag is closed, but TEI variable is still in scope. Later use it in second tag. --> <op:getCrossSellRecommendations inputItemList="<%=myRecs %>" />
注意: ここで示したタグの詳細な構文情報は、「リコメンデーションおよび評価タグの説明」を参照してください。 |
性別や年齢など、ユーザーに関するバックグラウンド情報から構成される個人情報データ項目は、recordDemographic
タグおよびremoveDemographicRecord
タグでのみ使用されます。個人情報データ項目には、購入情報、ナビゲーション情報またはレーティング情報は含まれないため、リコメンデーション・タグで返すことやgetCrossSellRecommendations
タグまたはevaluateItems
タグに入力することはできません。
個人情報項目は、購入項目やナビゲーション項目のようにtype
およびID
で識別されるのではなく、type
およびvalue
で識別されます。これらは、recordDemographic
タグおよびremoveDemographicRecord
タグに対するただ2つの属性です。MTR.MTR_CUSTOMERS
表のマイニング・テーブル・リポジトリの列として存在する、いくつかの事前定義済タイプがあります。
GENDER
AGE
MARITAL_STATUS
PERSONAL_INCOME
HOUSEHOLD_INCOME
IS_HEAD_OF_HOUSEHOLD
HOUSEHOLD_SIZE
RENT_OWN_INDICATOR
ATTRIBUTE1
からATTRIBUTE50
までの50個のカスタマイズ可能な列もあります。
カスタマイズ可能なタイプを使用するには、次のことを行う必要があります。
Oracle Application Serverリリース2では、項目記録タグに、受信モードという動作モードの1つを使用できます。このモードでは、購入する品目やナビゲートするURLなどをユーザーが選択すると、そのユーザーに対して表示されるページ(受信側ページと呼びます)には、項目を記録するrecord
XXX
タグが含まれます。
一般的な例として、ページでgetRecommendations
タグを使用し、順番に表示されるリコメンデーションのリストを生成するとします。各リコメンデーション項目には、ユーザーが詳細情報を取得するために選択できる詳細リンクと、ユーザーが品目を購入するために選択できる購入リンクがあります。ユーザーが詳細を選択してアクセスするページに、recordNavigation
タグを配置できます。また、ユーザーが購入を選択してアクセスするページ(たとえば、購入確認ページなど)に、recordPurchase
タグを配置できます。どちらの場合も、項目のタイプとIDは、その項目専用の受信側ページですでに既知である可能性があります。
同様に、ユーザーが個人情報を入力するJSPページにrecordDemographic
タグを配置できます。たとえば、ユーザーが婚姻状況、年齢および所得を入力できるページなどがあります。ユーザーが情報を入力すると(たとえば、年齢が44歳で年収が$50,000の独身者を想定します)、HTMLフォームの背後のアクションのターゲットは、そのプロファイル用に調整された広告ページです。このページには、タイプMARITAL_STATUS
、AGE
およびPERSONAL_INCOME
のrecordDemographic
タグがあります。1つのページに複数のrecordDemographic
タグを使用できます。
通常は、購入項目とナビゲーション項目に対するtype
とID
など、適切な属性を指定することにより項目を識別します。または、以前に作成した項目リストとそのリストのインデックス値を使用して、項目を指定できます。アプリケーションは、項目リスト配列オブジェクトをsession
またはrequest
オブジェクトにコピーでき、索引を受信側ページにパラメータとして渡すこともできます。受信側ページでは、項目リストをsession
またはrequest
オブジェクトから取得し、索引とともにrecord
XXX
タグに渡すことができます。受信側ページを起動する前に送信側ページが複数の索引を収集でき、同じ項目リストから同時に複数の項目を記録できるという点で、このアプローチには少なくとも1つの利点があります。
前に概説したように、selectFromHotPicks
タグ、getRecommendations
タグ、getCrossSellRecommendations
タグおよびevaluateItems
タグは、すべて項目の配列を返します。この項では、返されるリコメンデーションを入念に調整するために使用できるチューニングおよびフィルタリング設定と、リコメンデーションをソートするための設定に関する情報を示します。ただし、項目出力は常に項目入力のセットから選択されるため、フィルタリング設定はevaluateItems
タグには適用されません。
この項の構成は、次のとおりです。
いくつかのチューニング設定は、リコメンデーション・エンジンがリコメンデーションを返す際に使用する修飾とロジックの一部を決定します。各設定には、ここで説明する方法のいずれかで決定できる値が必要です。
これらの設定は、表1にまとめるように、selectFromHotPicks
タグ、getRecommendations
タグ、getCrossSellRecommendations
タグおよびevaluateItems
タグのtuning
XXX
属性で指定できます。または、tuningName
属性を使用して、アプリケーション・レベルのpersonalization.xml
ファイル(最初に選択)またはサーバー全体のpersonalization.xml
ファイル内の指定した<Tuning>
要素から設定を取得できます。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
属性設定がない場合、または<Tuning>
要素がない場合は、次の手順の順序に従ってデフォルト値が選択されます。
personalization.xml
ファイルの<DefaultTuning>
要素に従います。
personalization.xml
ファイルの<DefaultTuning>
要素に従います。
tuningDataSource="ALL" tuningInterestDimension="NAVIGATION" tuningPersonalizationIndex="MEDIUM" tuningProfileDataBalance="BALANCED" tuningProfileUsage="INCLUDE"
注意: ハードコードされたデフォルトを使用する場合は、いずれの |
チューニング設定の詳細は、『Oracle Application Server Personalization管理者ガイド』を参照してください。
チューニング設定に加えて、リコメンデーション・リクエストに対して指定できるフィルタリング設定があります。各設定には、ここで説明する方法のいずれかで決定できる値が必要です。
これらの設定は、getRecommendations
タグ、getCrossSellRecommendations
タグおよびselectFromHotPicks
タグのfiltering
XXX
属性で指定できます。(フィルタリングは、evaluateItems
タグには関係しません。)または、filteringName
属性を使用して、アプリケーション・レベルのpersonalization.xml
ファイル(最初に選択)またはサーバー全体のpersonalization.xml
ファイル内の指定した<Filtering>
要素から設定を取得できます。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
属性設定がない場合または<Filtering>
要素がない場合は、アプリケーション・レベルのpersonalization.xml
ファイル(最初に選択)またはサーバー全体のpersonalization.xml
ファイル内の<DefaultFiltering>
要素からデフォルト値が選択されます。
次に、フィルタリング・パラメータを示します。
filteringTaxonomyID
: 整数を表すJava文字列であり、整数はOracleAS Personalization環境の項目分類のIDです。
filteringMethod
: ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
、SUBTREE_ITEMS
、ALL_CATEGORIES
、INCLUDE_CATEGORIES
、EXCLUDE_CATEGORIES
、SUBTREE_CATEGORIES
およびCATEGORY_LEVEL
のいずれかです。表2に、その意味のサマリーを示します。これらのメソッドは常に、filteringTaxonomyID
値で指定された分類に適用されます。
getCrossSellRecommendations
タグの場合は、ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
およびSUBTREE_ITEMS
の設定のみサポートされます。
filteringCategories
: 各IDの後が単一のプラス記号(+)で区切られた整数IDのJava文字列であり、特定の分類内の既存の項目カテゴリを識別します。カテゴリは、MTR.MTR_CATEGORY
表内のマイニング・テーブル・リポジトリで定義されます。
任意のXXX
_CATEGORIES
設定では、リコメンデーションは、特定の映画タイトルなどの項目ではなく、「ドラマ」などのカテゴリの形式で返されます。この場合の項目タイプはCategory
で、カテゴリは最初にマイニング・テーブル・リポジトリで定義される必要があります。
詳細は、『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
各項目のprediction
フィールド(レーティングまたはランキング)に従って、返される項目をソートできます。このフィールドの使用方法は、「レーティングおよびランキング」を参照してください。
selectFromHotPicks
タグ、getRecommendations
タグ、getCrossSellRecommendations
タグまたはevaluateItems
タグのsortOrder
属性を使用して、ASCEND
、DESCEND
またはNONE
(デフォルト)のソート順を指定します。昇順は最も一致するものから順にリストし、降順はその逆の順序でリストします。5段階ランキング項目では、1が最高ランクであるため、これらの項目の昇順は1、2、3、4、5の順になります。5段階レーティング項目では、数値が大きいほど高いレーティングを意味するため、これらの項目の昇順は4.5、3.9、2.5、2.2、1.8のような順になります。
この項では、OracleAS PersonalizationタグおよびItem
パブリック・クラスの構文と使用方法を詳細に説明し、最後にタグ制限について説明します。この項の構成は、次のとおりです。
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開発者ガイド』を参照してください。
注意:
|
ここで説明したタグ属性のいくつかを使用する場合は、OracleAS Personalizationとリコメンデーション・エンジン実装の一般的な知識が必要です。ここで示す情報が不完全な場合は、『Oracle Application Server Personalization管理者ガイド』および『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
この項では、リコメンデーション・エンジン・セッションを開始、終了および管理するための次のタグについて記載します。
この項では、リコメンデーション・エンジン・セッションの開始に使用する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
タグにボディはありません。
startRESession
タグが機能するためには、REName
が必須属性であり、タグ属性またはいずれかのpersonalization.xml
ファイルでREURL
、RESchema
およびREPassword
を定義する必要があります。(「Personalizationタグ・ライブラリ構成ファイル」も参照してください。)
REName
は、リコメンデーション・エンジン・ファームのリコメンデーション・エンジン接続の名前を指定します。マルチ・ユーザー・セッションでは、効率を高めるために、できるだけ同じ接続を共有する必要があります。これを実現するには、同じ接続を使用する場合に同じREName
値を使用します。リコメンデーション・エンジン接続が作成された後で、REName
値をキーとして使用して接続がキャッシュされます。
REURL
、RESchema
またはREPassword
が、最初に接続を確立するstartRESession
タグの属性で設定されていない場合、この3つのすべての設定は、Name
属性がstartRESession
タグのREName
値と一致する<RE>
要素を持つpersonalization.xml
ファイルから取得される必要があります。この場合、デフォルト値以外を使用するには、<RE>
要素でRECacheSize
およびREFlushInterval
を設定する必要もあります。このシナリオでは、アプリケーション全体のpersonalization.xml
が最初に検索され、サーバー全体のpersonalization.xml
は、アプリケーション全体のファイルにREName
値を名前として持つ<RE>
要素がない場合にのみ検索されます。
REName
属性を<RE>
要素設定とともに使用して、ファーム内のリコメンデーション・エンジン間でロード・バランシングを促進できます。各<RE>
要素は、ファーム内の異なるリコメンデーション・エンジンを指します。JSPページは、なんらかのロード・バランシング経験則に従って、異なるstartRESession
タグのREName
属性に異なる値を割り当てることにより、異なるリコメンデーション・エンジン間で交代で使用できます。
RECacheSize
およびREFlushInterval
にはデフォルト値が用意されていますが、これらは開始時に使用することのみ意図されています。アプリケーションの実行で経験を積んだ後、Webサイトの条件に従ってこれらの値をチューニングできます。RECacheSize
およびREFlushInterval
の設定は、相互に連携して行う必要があり、ユーザー・アクションの結果として項目をリコメンデーション・エンジン・セッション・キャッシュにどの程度迅速に追加するかの見積もりに従う必要があります。デフォルトのキャッシュ・サイズは最大3234KBで、約4800項目を格納するのに十分な領域です。デフォルトのフラッシュ間隔の60秒(60000ミリ秒)では、1秒間に80項目のキャッシュ入力速度を実現できます。フラッシュ間隔を120秒に増やした場合は、1秒間に40のみの新規項目の追加をサポートできます。一方、フラッシュ間隔を30秒に減らした場合は、1秒間に160項目のキャッシュ入力速度をサポートできます。ただし、フラッシュ間隔を短くする場合の欠点は、フラッシュ後の(remove
XXX
Record
タグを通じた)項目の削除でデータベースとのやりとりが必要であることです。
同じJVM内の同じリコメンデーション・エンジン接続を共有するすべてのセッションは、同じセッション・キャッシュも共有することに注意してください。キャッシュ入力速度は、これらすべてのセッションで累積されます。
REName
(必須): リコメンデーション・エンジン・ファーム内のリコメンデーション・エンジン接続の名前を指定する場合に使用します。ある状況では、personalization.xml
内の<RE>
要素の名前にも一致させ、属性の使用方法に関する注意で示したように設定をここから取得できるようにする必要があります。関連情報は、「Personalizationタグ・ライブラリ構成ファイル」を参照してください。
REURL
: リコメンデーション・エンジン・データベースのJDBC接続文字列です。
RESchema
: リコメンデーション・エンジン・データベース・スキーマの名前です。
REPassword
: RESchema
名に対応するパスワードです。
RECacheSize
: リコメンデーション・エンジン・セッション・キャッシュのサイズをKB単位で指定します。デフォルトは3234KBです。属性の使用方法に関する注意で説明したように、これはREFlushInterval
と連携して調整する必要があります。
REFlushInterval
: リコメンデーション・エンジン・セッション・キャッシュ内のデータがリコメンデーション・エンジン・スキーマにフラッシュされる頻度を指定します。単位はミリ秒で、デフォルトは60000(1分)です。属性の使用方法に関する注意で説明したように、これはRECacheSize
と連携して調整する必要があります。
session
: OracleAS Personalization JSPページがHTTPセッション・オブジェクトを使用してステートフル方式で動作するよう指定するには、「true
」設定(デフォルト)を使用します。かわりにCookieを使用してページがステートレス方式で動作するようにするには、「false
」設定を使用します。
userType
: Webサイト・ユーザーが匿名の「visitor
」(デフォルト)と登録済の「customer
」のどちらであるかを示します。
userID
: Webサイト・ユーザーのユーザー名です。匿名ビジターの場合など、ユーザー名が提供されていない場合は、タグ・ハンドラによってIDが自動的に生成されます。
storeUserIDIn
: 後で使用するためにuserID
値を格納する場合は、storeUserIDIn
で、格納先のTEI String
変数の名前を指定できます。この属性は、自動的に生成されたユーザーIDに役立ちます。
disableRecording
: 「true
」設定を使用すると、record
XXX
タグのアクションが無効になります。これにより、ユーザーに自身のアクティビティを記録しないことの指定を許可するWebサイトなどが可能になります。ピーク時間中にサイトのパフォーマンスを改善する方法にもなります。この属性は、現在のユーザーIDなどに基づいて、リクエスト時に設定できます。これにより、JSPコードを変更しなくても、適切なユーザーに対して、または適切な時刻にのみ記録を無効にできます。デフォルト設定は「false
」です。
このタグを使用して、ステートフル・アプリケーションでリコメンデーション・エンジン・セッションを明示的に終了できます。通常これはオプションですが、一部の状況では必須です。「リコメンデーション・エンジン・セッションの終了」を参照してください。アプリケーション・ロジックで、リコメンデーション・エンジン・セッションが必要なくなったと判断された場合は、ステートフル・アプリケーションでもこのタグを使用することをお薦めします。これにより、不要なリソースが解放されます。
endRESession
を使用しない状況では、次の動作に注意してください。
startRESession
タグのsession
属性を「true
」に設定してリコメンデーション・エンジン・セッションを開始した場合は、HTTPセッションの終了時にリコメンデーション・エンジン・セッションが暗黙的に終了します。
session
を「false
」に設定してリコメンデーション・エンジン・セッションを開始した場合、リコメンデーション・エンジン・セッションは、非アクティブになってから十分な期間が経過した後でタイムアウトできます。タイムアウト時間は、リコメンデーション・エンジン・スキーマの構成パラメータとして指定します。endRESession
タグは効果がありません。
<op:endRESession />
endRESession
タグには属性とボディがありません。
このタグは、匿名ビジターが登録済顧客アカウントを作成する状況で使用します。このタグを実行すると、既存のリコメンデーション・エンジン・セッションは、ビジター・セッションから顧客セッションに変換されます。セッションで以前に収集されたデータは保持されます。このタグは、新規顧客を実際に作成するのではなく、新規ログインも実行しません。実行中のリコメンデーション・エンジン・セッションの変換のみ行います。
customerID
値はリクエスト時属性であり、アプリケーションで指定する必要があります。
<op:setVisitorToCustomer customerID = "<%=registered_customer_name%>" />
setVisitorToCustomer
タグにボディはありません。
この項では、リコメンデーション・タグ、評価タグおよび関連サブタグを詳細に説明します。次のタグについて説明します。
「リコメンデーションおよび評価タグの概要」も参照してください。
このタグを使用して、購入、ナビゲーションまたはレーティングのリコメンデーション・セットをリクエストします。特定の分類からの項目が考慮され、指定に従ってチューニングとフィルタリングが行われます。リコメンデーションは、次の型の配列に返されます。
oracle.jsp.webutil.personalization.Item[]
getCrossSellRecommendations
やevaluateItems
などの他のタグではリコメンデーションの基礎として使用する項目の入力を必要としますが、getRecommendations
タグはこれを必要としません。リコメンデーションは、特定の項目ではなくユーザーIDとプロファイル(ユーザー・セッションと履歴データ)に基づきます。
結果のリコメンデーションは、オプションとして、タグのstoreResultsIn
属性で指定された変数名でItem[]
型のTEI変数に格納できます。リコメンデーションは、getRecommendations
タグ内で暗黙的にも使用できます。オプションとして、項目に目的の処理を行うために、ネストしたgetNextItem
タグでタグ・ボディを使用できます。「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>
次の点に注意してください。
from
とfromHotPicksGroups
のどちらかを必ず指定する必要があります。
storeResultsIn
属性またはネストしたgetNextItem
タグのタグ・ボディ、あるいはオプションでその両方を使用して出力項目にアクセスします。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、tuning
XXX
属性で個々のチューニング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「チューニング設定」を参照してください。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、filtering
XXX
属性で個々のフィルタリング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「リコメンデーション・フィルタリング」を参照してください。
filteringMethods
がALL_ITEMS
またはALL_CATEGORIES
に設定されていないかぎり、filteringCategories
設定は必須です。これらの設定は、タグ属性またはpersonalization.xml
で指定できます。
XXX
_CATEGORIES
フィルタリング・メソッドは、特定の項目ではなく、マイニング・テーブル・リポジトリで定義されたカテゴリを返します。
from
: 項目の分類全体から項目を選択する場合に使用します。デフォルトであり標準的な「top
」設定では、最も望ましいN個(またはそれ以下)の項目が表示されます。Nは、表示するリコメンデーションの最大数です(maxQuantity
)。「bottom
」設定では、最も望ましくないN個(またはそれ以下)の項目が表示されます。これは、たとえば製品管理部門が、顧客が最も気に入っていない項目を調べる場合に役立ちます。
fromHotPicksGroups
: 1つ以上のホット・ピック・グループから項目を選択する場合に使用します。アプリケーションは、startRESession
タグで指定された同じリコメンデーション・エンジンから、一連のホット・ピック・グループID番号を判断する必要があります。fromHotPicksGroups
属性では、「10+20+30
」のように、グループID番号をプラス記号(+)で区切って文字列にリストする必要があります。
storeResultsIn
: オプションとして、結果のリコメンデーションを格納するItem[]
型のTEI変数名を指定します。(これはgetCrossSellRecommendations
では必須属性ですが、getRecommendations
では必須ではありません。変数名が指定されている場合、変数のスコープはAT_BEGIN
です。開始タグからページの終わりまで使用できます。値は、JSP式ではなく変数名です。変換用の変数名を指定する必要があります。これはリクエスト時属性ではありません。
storeInterestDimensionIn
: オプションとして、関心度を格納するTEI文字列変数(NAVIGATION
、PURCHASING
またはRATING
)の名前を指定します。比較には、Item
クラスで定義された定数INT_DIM_NAVIGATION
、INT_DIM_PURCHASING
またはINT_DIM_RATING
を使用します。変数名が指定されている場合、変数のスコープはAT_BEGIN
です。開始タグからページの終わりまで使用できます。変換用の変数名を指定する必要があります。これはリクエスト時属性ではありません。返される値は、タグで使用されるtuningInterestDimension
設定と同じになります。
maxQuantity
: 返すことのできるリコメンデーションの最大数を指定する場合に使用します。アプリケーションのpersonalization.xml
ファイルまたはサーバー全体のpersonalizaton.xml
ファイルの<RecommendationSettings>
要素で指定された一般的なデフォルトがある場合、この属性はオプションです。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
tuningName
: personalization.xml
の<Tuning>
要素の名前を指定して、チューニング設定をここから取得できるようにします。または、個々のtuning
XXX
属性を使用します。
tuningDataSource
: 「チューニング設定」を参照してください。
tuningInterestDimension
: 「チューニング設定」を参照してください。
tuningPersonalizationIndex
: 「チューニング設定」を参照してください。
tuningProfileDataBalance
: 「チューニング設定」を参照してください。
tuningProfileUsage
: 「チューニング設定」を参照してください。
filteringName
: personalization.xml
の<Filtering>
要素の名前を指定して、フィルタリング設定をここから取得できるようにします。または、個々のfiltering
XXX
属性を使用します。
filteringTaxonomyID
: 「リコメンデーション・フィルタリング」を参照してください。
filteringMethod
: 「リコメンデーション・フィルタリング」を参照してください。
filteringCategories
: 「リコメンデーション・フィルタリング」を参照してください。文字列内の整数は、「101+200+35
」のようにプラス記号(+)で区切られます。
sortOrder
: 項目が昇順でソートされるか(「ASCEND
」、最も一致するものが最初)、降順でソートされるか(「DESCEND
」)を指定します。デフォルトでは、ソートを要求しません(「NONE
」)。詳細は、「ソート順」を参照してください。
次に、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タグ」も参照してください。
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>
次の点に注意してください。
inputItemList
属性、ネストしたforItem
タグのあるボディ、またはオプションでその両方が必要です。両方のメカニズムを使用する場合は、forItem
タグが最初に実行され、指定された項目が項目リストに配置されます。次に、inputItemList
エントリが考慮され、リストに追加されます。
getRecommendations
タグとは異なり、storeResultsIn
はgetCrossSellRecommendations
タグの必須属性です。結果のリコメンデーションを格納するために、Item[]
型のTEI変数の名前を指定する必要があります。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、tuning
XXX
属性で個々のチューニング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「チューニング設定」を参照してください。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
tuningInterestDimension
設定がtuningDataSource
設定と同じでない場合、OracleAS Personalization規則の設定によっては、リコメンデーションを取得できないことがあります。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、filtering
XXX
属性で個々のフィルタリング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「リコメンデーション・フィルタリング」を参照してください。
filteringMethods
が「ALL_ITEMS
」に設定されていないかぎり、filteringCategories
設定は必須です。これらの設定は、タグ属性またはpersonalization.xml
で指定できます。
getCrossSellRecommendations
タグはカテゴリ・ベースのフィルタリングを使用できないため、このタグは、制限されたフィルタリング・メソッドのセット(ALL_ITEMS
、INCLUDE_ITEMS
、EXCLUDE_ITEMS
およびSUBTREE_ITEMS
)のみサポートします。
inputItemList
: Item[]
配列で入力項目を指定する場合は、配列を返すJSP式でこの属性を使用します。式内の項目配列は、前のリコメンデーション・タグのものを使用できます。詳細は、「項目配列の入力」を参照してください。
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タグ」も参照してください。
このタグを使用して、ユーザー・プロファイルを考慮せずに、分類全体からではなくホット・ピック・グループのセットに対してのみリコメンデーションをリクエストします。チューニングおよびフィルタリングも、指定したグループの項目に適用されます。
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>
次の点に注意してください。
hotPicksGroups
属性はgetRecommendations
タグのfromHotPicksGroups
属性と同等ですが、hotPicksGroups
は必須です。
storeResultsIn
属性またはネストしたgetNextItem
タグのタグ・ボディ、あるいはオプションでその両方を使用して出力項目にアクセスします。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、tuning
XXX
属性で個々のチューニング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「チューニング設定」を参照してください。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
personalization.xml
内の<Filtering>
要素の名前に対応するfilteringName
を指定するか、filtering
XXX
属性で個々のフィルタリング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「リコメンデーション・フィルタリング」を参照してください。
filteringMethods
が「ALL_ITEMS
」または「ALL_CATEGORIES
」に設定されていないかぎり、filteringCategories
設定は必須です。これらの設定は、タグ属性またはpersonalization.xml
で指定できます。
XXX
_CATEGORIES
フィルタリング・メソッドは、特定の項目ではなく、マイニング・テーブル・リポジトリで定義されたカテゴリを返します。
hotPicksGroups
(必須): この属性を使用して、リコメンデーションの選択対象の1つ以上のホット・ピック・グループを指定する必要があります。アプリケーションは、startRESession
タグで指定された同じリコメンデーション・エンジンに対して、1つ以上のホット・ピック・グループID番号を判断する必要があります。hotPicksGroups
属性では、「1+20+35
」のように、グループID番号をプラス記号(+)で区切って文字列にリストする必要があります。
他のすべての属性は、「Personalization getRecommendationsタグ」で説明したgetRecommendations
タグに対する場合と同じように使用しますが、「属性の使用方法に関する注意」で示した制限があります。
チューニング、フィルタリングおよびソートの追加情報は、「チューニング設定」、「リコメンデーション・フィルタリング」および「ソート順」を参照してください。
ネストしたgetNextItem
タグを使用するselectFromHotPicks
タグの例は、「Personalization getNextItemタグ」を参照してください。
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>
次の点に注意してください。
inputItemList
属性、ネストしたforItem
タグのあるボディ、またはオプションでその両方が必要です。両方のメカニズムを使用する場合は、forItem
タグが最初に実行され、指定された項目が項目リストに配置されます。次に、inputItemList
エントリが考慮され、リストに追加されます。
getRecommendations
タグとは異なり、storeResultsIn
はevaluateItems
タグの必須属性です。レーティングされた項目を格納するために、Item[]
型のTEI変数を指定する必要があります。
personalization.xml
内の<Tuning>
要素の名前に対応するtuningName
を指定するか、tuning
XXX
属性で個々のチューニング設定を指定します。どちらも指定しない場合、デフォルト値がどのように選択されるかは、「チューニング設定」を参照してください。「Personalizationタグ・ライブラリ構成ファイル」も参照してください。
evaluateItems
タグのフィルタリング属性はありません。したがって、別の属性(taxonomyID
)で分類を指定する必要があります。
taxonomyID
(必須): 項目の取得先の分類のIDを指定する整数です。
inputItemList
: Item[]
配列で入力項目を指定する場合は、配列を返すJSP式でこの属性を使用します。式内の項目配列は、前のリコメンデーション・タグのものを使用できます。詳細は、「項目配列の入力」を参照してください。
他のすべての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)); %>
このタグを使用して、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つのモードがあります。
または
itemList
: Item[]
配列を返すJSP式を使用します。式内の項目配列は、前のリコメンデーション・タグのものを使用できます。この属性は、配列の目的の要素を指定するindex
とともに使用します。type
とID
を使用する場合は、この属性を使用しないでください。詳細は、「項目配列の入力」を参照してください。
index
: 項目配列の目的の要素の索引番号を指定する場合に使用します。itemList
属性に項目配列を指定します。type
とID
を使用する場合は、この属性を使用しないでください。
type
: 「靴」などの項目のタイプを指定します。index
とitemList
を使用する場合は、この属性を使用しないでください。
ID
: 特定のタイプの各項目に対して一意の識別番号です。index
とitemList
を使用する場合は、この属性を使用しないでください。
次の例では、指定した複数の靴の購入品目をクロスセリング・リコメンデーションの入力として使用し、結果のリコメンデーションを表示します。
<op: getCrossSellRecommendations storeResultsIn="shoeItems" > <op:forItem type="shoes" ID="20" /> <op:forItem type="shoes" ID="26" /> <op:forItem type="shoes" ID="45" /> <op:forItem type="shoes" ID="93" /> <op:forItem type="shoes" ID="101" /> </op:getCrossSellRecommendations> <p> Based on past shoe purchases, here are the shoes we recommend! </p> <%= ApplicationSupport.displayItemArray(shoeItems) %>
オプションとして、getRecommendations
またはselectFromHotPicks
タグ・ボディ内でネストしたgetNextItem
タグを使用して、外側のタグから返されるリコメンデーションにアクセスできます。(代替方法として、getRecommendations
タグまたはselectFromHotPicks
タグのstoreResultsIn
属性を通じて項目にアクセスすることもできます。)
getNextItem
タグは、初めて実行された際に最初の項目にアクセスし、その後のgetNextItem
の実行では項目配列を1つずつ進み、getNextItem
を実行するたびに次の項目が取得されます。項目配列の終わりに達すると、タグは各タグ属性にnull値を挿入します。
タグ属性を使用して次の項目のタイプとIDを格納するか、Item
インスタンス自体を格納します。
次の点に注意してください。
storeResultsIn
属性を通じてgetRecommendations
タグまたはselectFromHotPicks
タグから明示的な項目配列を使用しても、getNextItem
タグの使用は妨げられません。storeResultsIn
を通じてアクセスできる項目配列は、getNextItem
タグを通じた処理に影響されません。
getRecommendations
タグ内にネストした1つ以上のgetRecommendations
タグを使用する場合、または別のselectFromHotPicks
タグ内で1つ以上のselectFromHotPicks
タグを使用する場合は、タグの1つのみが、ネストしたgetNextItem
タグを使用して暗黙的なタグ結果にアクセスできます。ネストする連鎖内のその他のタグでは、storeResultsIn
属性を使用する必要があります。selectFromHotPicks
タグ内のgetRecommendations
タグ、またはgetRecommendations
タグ内のselectFromHotPicks
タグに、このような制限はありません。
<op:getNextItem [ storeTypeIn = "TEI_variable_for_item_type" ] [ storeIDIn = "TEI_variable_for_item_ID" ] [ storeItemIn = "TEI_variable_for_Item_instance" ] />
getNextItem
タグにボディはありません。
このタグの使用には2つのモードがあります。
または
すべてのTEI変数のスコープはAT_END
であり、これは終了タグからJSPページの終わりまで使用可能であることを意味します。すべてのTEI変数は、ページ内のそれより前のスクリプトレット・コードで宣言する必要があり、getNextItem
タグのスコープ内で参照できる必要があります。他のPersonalizationタグのTEI変数とは異なり、これらの変数は、JSPコンテナにより宣言されません。
storeTypeIn
: 次の項目のタイプを格納するTEI String
変数の名前を指定します。この属性は、storeIDIn
と連携して使用します。storeItemIn
を使用する場合はこの属性を使用しないでください。
storeIDIn
: 次の項目のIDを格納するTEI String
変数の名前を指定します。この属性は、storeTypeIn
と連携して使用します。storeItemIn
を使用する場合はこの属性を使用しないでください。
storeItemIn
: 次の項目を格納するItem
型のTEI変数の名前を指定します。storeTypeIn
とstoreIDIn
を使用する場合は、この属性を使用しないでください。
次の例では、getRecommendations
タグの内部のループで使用されているgetNextItem
タグを示します。ループは、getNextItem
がnull
を返すと終了します。
<op:getRecommendations from="top" tuningName="BalancedTuning" filteringName="GeneralFiltering" > <p> Top Picks selected especially for you: </p> <% String type=null; String ID=null; while(true) { %> <op:getNextItem storeTypeIn="type" storeIDIn="ID" /> <% if(type==null) break;%> <li> type: <%=type%> ID: <%=ID%> </li> <% } %> </op:getRecommendations>
次の例では、selectFromHotPicks
タグの内部のループ内のgetNextItem
タグを示します。
<op:selectFromHotPicks hotPicksGroups="1+5" tuningName="HotPicksTuning" filteringName="GeneralFiltering" > <p> We know you enjoy Horror and Musical movies. Look what we have on sale this week! </p> <% Item item=null; while(true) { %> <op:getNextItem storeItemIn="item" /> <% if(item==null) break;%> <li> <%= ApplicationSupport.displayItem(item) %> </li> <% } %> </op:selectFromHotPicks>
この項では、record
XXX
タグおよびremove
XXX
Record
タグを詳細に説明します。適切なrecord
XXX
タグ使用して、項目をリコメンデーション・エンジン・セッション・キャッシュに記録します。セッションで以前に記録された項目を削除する場合は、対応するremove
XXX
Record
タグを使用します。キャッシュ内の項目は、リコメンデーション・エンジン・セッションに定期的にフラッシュされます。その時点より後に項目を削除するには、データベースとのやりとりが必要です。
「項目の記録および削除タグの概要」も参照してください。
ここでは次のタグについて説明します。
このタグは、リコメンデーション・エンジン・セッションにナビゲーション項目を記録する場合に使用します。これは、ユーザーが項目をナビゲートすることにより項目内の関心事を示したことを記録します。たとえば、ユーザーがなんらかの関心事を表すアイコンを見て、アイコンの横にある「Tell Me More」ボタンをクリックする場合があります。ナビゲーション項目を削除するタグの詳細は、「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つのモードがあります。
または
関連情報は、「入力項目の指定」を参照してください。
type
: 「靴」などの項目のタイプを指定します。index
とitemList
を使用する場合は、この属性を使用しないでください。
ID
: 特定のタイプの各項目に対して一意の識別番号です。index
とitemList
を使用する場合は、この属性を使用しないでください。
itemList
: Item[]
配列を返すJSP式を使用します。式内の項目配列は、前のリコメンデーション・タグのものを使用できます。この属性は、配列の目的の要素を指定するindex
とともに使用します。type
とID
を使用する場合は、この属性を使用しないでください。詳細は、「項目配列の入力」を参照してください。
index
: 項目配列の目的の要素の索引番号を指定する場合に使用します。itemList
属性に項目配列を指定します。type
とID
を使用する場合は、この属性を使用しないでください。
このタグは、リコメンデーション・エンジン・セッションに購入項目を記録する場合に使用します。ユーザーが行った購入を記録します。購入項目を削除するタグの詳細は、「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 removeRatingRecordタグ」を参照してください。
このタグは、値(レーティング値)も指定する必要があるという点で、recordNavigation
やrecordPurchase
とは異なります。
注意: 「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
属性は、どちらの場合も必須です。
関連情報は、「入力項目の指定」を参照してください。
value
(必須): ユーザー・レーティング値を表す文字列です。整数または浮動小数点数を入力できます。数値は、マイニング・テーブル・リポジトリのMTR.MTR_BIN_BOUNDARIES
表の境界に従った適切なレーティング範囲である必要があります。
その他の属性は、recordNavigation
タグの属性と同じです。「Personalization recordNavigationタグ」を参照してください。
このタグは、リコメンデーション・エンジン・セッションに個人情報項目を記録する場合に使用します。個人情報項目は、特定のユーザーに関する個人情報の断片から構成されます。個人情報項目を削除するタグの詳細は、「Personalization removeDemographicRecordタグ」を参照してください。
このタグは、type
およびvalue
の2つの属性しか持たないという点で、他のrecord
XXX
タグとは異なります。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
タグにボディはありません。
type
(必須): サポートされる個人情報タイプの1つを指定します。複数の名前付きタイプに加えて、ATTRIBUTE1
、ATTRIBUTE2
、...、ATTRIBUTE50
という50個のカスタマイズ可能なタイプがあります。追加情報は、「個人情報項目」を参照してください。
value
(必須): GENDER
項目に対する「MALE
」または「FEMALE
」など、特定の個人情報タイプの適切な値を指定します。
このタグは、セッションで以前にリコメンデーション・エンジン・セッションに記録したナビゲーション項目を削除する場合に使用します。ナビゲーション項目を記録するタグの詳細は、「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 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 recordRatingタグ」を参照してください。
このタグは、値(レーティング値)も指定する必要があるという点で、removeNavigationRecord
やremovePurchaseRecord
とは異なります。
項目を削除するには、項目が記録されたのと同じリコメンデーション・エンジン・セッション中に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 recordDemographicタグ」を参照してください。
このタグは、type
およびvalue
の2つの属性しか持たないという点で、他のremove
XXX
Record
タグとは異なります。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つのシナリオがあります。
購入またはナビゲーション項目の場合、予測値はランキングです。レーティング項目の場合、予測値はレーティングです。
getCrossSellRecommendations
タグおよびevaluateItems
タグの入力項目リストに対してインスタンスを手動で作成する場合
Item
クラスは、最初のシナリオに対して次のゲッター・メソッドを用意しています。
String getType()
: 「靴」などの項目タイプ、または個人情報項目に対してサポートされている個人情報タイプの1つを返します。「CATEGORY
」の値は、カテゴリ全体が推奨されることを示します。
long getID()
: 項目ID番号を返します。
float getPrediction()
: レーティング項目に対してはレーティング、購入またはナビゲーション項目に対してはランキングを返します。ランキングは常に整数ですが、レーティングは浮動小数点数にすることができるため、この属性は浮動小数点数にする必要があります。
このクラスは、2番目のシナリオに対して次のセッター・メソッドを用意しています。
項目をカテゴリとして定義するメソッド、およびすでにカテゴリとして定義されているかどうかを判断するメソッドもあります。
Item
クラスには、次のパブリック・コンストラクタが用意されています。
type
属性は文字列である必要があります。ID
属性は、文字列またはlong
値にすることができます。
Item
クラスは、関心度に対して次のString
定数も定義します。これらの値は、リコメンデーション・タグのstoreInterestDimensionIn
属性で返される値との比較に使用します。
INT_DIM_NAVIGATION
: 関心度の高いナビゲーションに対して推奨される項目を示します。
INT_DIM_PURCHASING
: 関心度の高い購入に対して推奨される項目を示します。
INT_DIM_RATING
: 関心度の高いレーティングに対して推奨される項目を示します。
OracleAS Personalizationタグに対する属性設定について、次の制約に注意してください。
startRESession
タグには、次の制限があります。
REName
属性は最大12文字です。
REURL
属性は最大256文字です。
RESchema
属性は最大30文字です。
REPassword
属性は最大30文字です。
userID
属性は最大32文字です。
同じ制限が、personalization.xml
ファイルの<RE>
要素の対応する属性に適用されますが、personalization.xml
で使用されないuserID
は除きます。
Item
要素を任意のタグに渡すこと、または任意のタグから返すことができます。これはタグとの間で受け渡される単一のItem[]
配列の最大サイズであるだけでなく、タグが項目リストと1つ以上のforItem
タグの両方から入力を受け取る場合の合計最大サイズでもあります。
getRecommendations
、getCrossSellRecommendations
およびselectFromHotPicks
)の場合、最大1024のホット・ピック・グループを指定できます。このことは、getRecommendations
タグおよびgetCrossSellRecommendations
タグのfromHotPicksGroups
属性と、fromHotPicksGroups
タグのhotPicksGroups
属性に適用されます。
filteringCategories
属性で最大256のカテゴリを指定できます。
同様に、personalization.xml
ファイルの<Filtering>
要素に最大256の<Category>
サブ要素を指定できます。
recordDemographic
タグ、removeDemographicRecord
タグ、recordRating
タグおよびremoveRatingRecord
タグのvalue
属性の最大長は60文字です。
OracleAS Personalizationタグ・ライブラリは、personalization.xml
という名前の構成ファイルを使用したグローバルおよびデフォルト・タグ属性設定の指定をサポートします。この項では、personalization.xml
ファイルおよびサポートされる要素について説明します。構成は次のとおりです。
OracleAS Personalizationタグ・ライブラリは、personalization.xml
という名前の構成ファイルをサポートします。これらのファイルは、オプションのタグ属性のデフォルト設定の指定と、デフォルトおよび名前付きのチューニングとフィルタリングの設定の指定で役立ちます。設定は密接に関連していることがあり、設定を複数のタグや複数ページで設定するのは不便であるため、チューニングおよびフィルタリング設定にpersonalization.xml
を使用すると特に便利です。
特定のアプリケーションには、2つのpersonalization.xml
ファイルが関連しています。
/WEB-INF/personalization.xml
このファイルは、アプリケーション全体のデフォルトや設定について、特定のアプリケーションに対してのみ使用します。
[Oracle_Home]/j2ee/home/config/personalization.xml
これはサーバー全体の構成ファイルです。タグ属性または特定のアプリケーションのpersonalization.xml
ファイルに見つからない必須設定を取得するためにアクセスされます。
この項では、OracleAS Personalizationタグ・ライブラリでサポートされるpersonalization.xml
要素のXML DTD構文を記載します。これらの要素は、トップレベルの<personalization-config>
要素の内部にあります。
Personalizationタグは、DTDと照らしてpersonalization.xml
ファイルを検証します。
注意: 「Personalizationタグの制約」も参照してください。これらの制限の一部は、 |
この要素を使用して、返すことのできるリコメンデーションの最大数を表すmaxQuantity
のデフォルト値を、getRecommendations
タグ、getCrossSellRecommendations
タグおよびselectFromHotPicks
タグに対して設定します。
maxQuantity
設定値は、正の整数を表す文字列である必要があります。
<!ELEMENT RecommendationSettings EMPTY> <!ATTLIST RecommendationSetting maxQuantity CDATA #REQUIRED>
この要素を使用して、リコメンデーション・エンジン接続の名前を指定し、接続を確立します。属性の詳細は、「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
属性を参照できます。
この要素を使用して、名前付きチューニング設定を定義します。属性の詳細は、「チューニング設定」を参照してください。
<!ELEMENT Tuning EMPTY> <!ATTLIST Tuning Name CDATA #REQUIRED> <!ATTLIST Tuning DataSource (NAVIGATION|PURCHASING|RATING|DEMOGRAPHIC|ALL) "ALL" > <!ATTLIST Tuning InterestDimension (NAVIGATION|PURCHASING|RATING) #REQUIRED > <!ATTLIST Tuning PersonalizationIndex (LOW|MEDIUM|HIGH) #REQUIRED > <!ATTLIST Tuning ProfileDataBalance (HISTORY|CURRENT|BALANCED) #REQUIRED > <!ATTLIST Tuning ProfileUsage (INCLUDE|EXCLUDE) "INCLUDE" >
Name
属性は必須であり、リコメンデーション・タグのtuningName
属性で名前を参照できるようにこのチューニング設定のセットに一意の名前を付ける必要があります。
デフォルト値がINCLUDE
であるProfileUsage
を除き、リコメンデーション・リクエストのチューニング設定を完全に定義するためにはその他の属性も必要です。詳細は、『Oracle Application Server Personalizationプログラマーズ・ガイド』を参照してください。
この要素は、個々のチューニング・タグ属性またはtuningName
タグ属性(およびpersonalization.xml
内の対応する<Tuning>
要素)がないチューニング設定に使用します。
属性の意味は、<Tuning>
要素の場合と同じです。
<!ELEMENT DefaultTuning EMPTY> <!ATTLIST DefaultTuning DataSource (NAVIGATION|PURCHASING|RATING|DEMOGRAPHIC|ALL) "ALL" > <!ATTLIST DefaultTuning InterestDimension (NAVIGATION|PURCHASING|RATING) #REQUIRED > <!ATTLIST DefaultTuning PersonalizationIndex (LOW|MEDIUM|HIGH) #REQUIRED > <!ATTLIST DefaultTuning ProfileDataBalance (HISTORY|CURRENT|BALANCED) #REQUIRED > <ATTLIST! DefaultTuning ProfileUsage (INCLUDE|EXCLUDE) "INCLUDE" >
これらの要素を使用して、名前付きフィルタリング設定を定義します。属性の詳細は、「リコメンデーション・フィルタリング」を参照してください。
フィルタリングName
属性を使用して、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 >
この要素は、個々のフィルタリング・タグ属性またはfilteringName
タグ属性(およびpersonalization.xml
内の対応する<Filtering>
要素)がないフィルタリング設定に使用します。
<!ELEMENT DefaultFiltering (ExcludeItems|IncludeItems|ExcludeCategories| IncludeCategories|CategoryLevel|SubTreeItems SubTreeCategories|AllItems|AllCategories) > <!ATTLIST DefaultFiltering TaxonomyID CDATA #REQUIRED> <!ELEMENT Category (#PCDATA) > <!ELEMENT ExcludeItems ( Category+ ) > <!ELEMENT IncludeItems ( Category+ ) > <!ELEMENT ExcludeCategories ( Category+ ) > <!ELEMENT IncludeCategories ( Category+ ) > <!ELEMENT CategoryLevel ( Category+ ) > <!ELEMENT SubTreeItems ( Category+ ) > <!ELEMENT SubTreeCategories ( Category+ ) > <!ELEMENT AllItems EMPTY > <!ELEMENT AllCategories EMPTY >
<?xml version="1.0" ?> <personalization-config> <description> Sample personalization config file </description> <RecommendationSettings maxQuantity="5" /> <RE Name="RE1" URL="jdbc:oracle:thin:@sid" Schema="RESCHEMA" Password="secret" CacheSize="2999" FlushInterval="30000" /> <RE Name="RE2" URL="jdbc:oracle:oci:@acme" Schema="RE2-schema" Password="RE2-pwd" CacheSize="5555" FlushInterval="100000" /> <Tuning Name = "tuning1" DataSource="ALL" InterestDimension="NAVIGATION" PersonalizationIndex="HIGH" ProfileDataBalance="BALANCED" ProfileUsage="INCLUDE" /> <DefaultTuning DataSource="PURCHASING" InterestDimension="RATING" PersonalizationIndex="MEDIUM" ProfileDataBalance="CURRENT" ProfileUsage="EXCLUDE" /> <Filtering Name = "filter1" TaxonomyID="25" > <CategoryLevel> <Category>10</Category> <Category>11</Category> <Category>15</Category> </CategoryLevel> </Filtering> <DefaultFiltering TaxonomyID="1" > <AllItems/> </DefaultFiltering> </personalization-config>