Search Experiencesのパーソナライズ
検索ブループリントの主要な使用例は、Liferay の 検索結果 をパーソナライズすることです。 パーソナライズされた検索体験では、ユーザーは自分の状況に応じた検索結果を見ることができます。 次のような文脈的な質問への回答に設計図が反応するようにするための要素があります。
- ユーザーはどこにいますか?
- ユーザーにはどのような役割がありますか?
- ユーザーはどのサイトのメンバーですか?
- ユーザーはどのようなコンテンツを所有していますか?
- ユーザーはゲストですか?
- そのユーザーは新規ユーザーですか?
- ユーザーはどの ユーザーセグメントに属していますか?
各ユーザーのコンテキストに合わせたブループリントがない場合、デフォルトの結果は、検索されたキーワードのテキストが、インデックスされたドキュメントの 文字分割 値とどれだけ一致するかによって関連性を計算するクエリに基づいてスコア化されます。
検索結果をパーソナライズすることで、ユーザーが成功に必要な情報を見つけられる可能性が高まります。 これにより、ユーザーがコンテンツに関心を持ち続けることで、サイトの成功の可能性が高まります。 いくつかの例を挙げます。
- ユーザーのIPアドレスに近い特定の結果を優先する
- 新規ユーザーの場合、特定のコンテンツを優先的に表示する
- ユーザーが認証されていない場合、特定のコンテンツを非表示にする
パーソナライズ要素
パーソナライゼーションの取り組みにおいて特に役立つ要素がいくつかあります。
近接性の向上: は ipstack サービスを使用して、ドキュメント内の geopoint フィールドで示されるユーザーの位置情報に近い検索結果をブーストします。 サービスの設定と実装については、以下の例 を参照してください。
現在の言語のコンテンツをブースト: は、ユーザーの現在のセッション言語に一致する defaultLanguageId フィールドを使用して検索結果をブーストします。
ゲストユーザーに対してカテゴリ内のコンテンツを非表示にする: は、検索ユーザーが認証されていない場合、 特定のカテゴリ フィールドに一致する検索結果を非表示にします。
検索を自分のコンテンツに限定する: は、ドキュメントの userId フィールドが検索ユーザーと一致する検索結果のみを返します。
検索を自分のサイトに限定する: ユーザーがメンバーになっている サイトに限定した検索結果のみを返します。
マイサイトのコンテンツをブースト: は、検索ユーザーが結果の対象となっているサイトのメンバーである場合に検索結果をブーストします。
新規ユーザーアカウントのカテゴリ内のコンテンツをブースト: は、検索ユーザーのアカウントが定義された期間内に作成された場合に、特定のカテゴリの検索結果をブーストします。
ユーザーセグメントのカテゴリ内のコンテンツをブースト: は、ユーザーが特定の ユーザーセグメント に属している場合、特定のカテゴリの検索結果をブーストします。
これらの要素はパーソナライゼーションにとって重要ですが、利用可能なオプションのごく一部にすぎません。 標準搭載されているすべてのブループリントとその構成の包括的なリストについては、「ブループリント要素検索リファレンス」を参照してください。
検索結果をパーソナライズするためのブループリントの構築
場合によっては、ユーザーの位置情報に基づいて検索結果を表示したい場合もあるでしょう。 これを行うには、
- ユーザーのIPアドレスを地理的に特定するサービス、 https://ipstack.com を設定します。
- Liferayアセットの地理的位置情報を取得します。
- 位置情報サービスと通信する要素を含む設計図を作成します。
Ipstackサービスの設定
ブループリントを設定する前に、 ipstack キー を取得し、Liferay で ipstack サービスを有効にする必要があります。
- https://ipstack.com にアクセスして、API キーを取得してください。
- Liferay では、 システム設定 → プラットフォーム → 検索エクスペリエンス → Ipstack に移動します。
- をクリックして を有効にします。
- APIキーを入力します.
- [保存]をクリックします。

位置情報アセットを設定する
検索ドキュメントには、ipstackサービスおよびBoost Proximity要素と連携するために、 ジオポイントフィールド が必要です。 Liferayには、既存のアセットにカスタムフィールドとして追加できる互換性のある位置情報フィールドが含まれています。
- コントロール パネル → カスタム フィールド に移動します。
- ブログのエントリに新規カスタムフィールドを追加します。
- タイプ:位置情報
- フィールド名:場所
- [保存]をクリックします。
- ブログ記事を2件追加します(サイトメニューを開き、 コンテンツ & データ → ブログ に移動します)。
- 最初のブログのエントリ
- タイトル: ブログタイトル
- コンテンツ: ブログコンテンツ
- カスタムフィールドで、現在地から約100km離れた場所に位置情報ピンをドラッグします。
- ブログを公開します。
- 2つ目のブログのエントリ
- タイトル: 2つ目のブログタイトル
- 内容: 2つ目のブログ記事
- カスタムフィールドで、位置情報ピンを現在地にできるだけ近くなるようにドラッグします。
- ブログを公開します。
- 最初のブログのエントリ
ピンの位置をより正確にするために、位置情報マップを拡大表示してください。
検索ページで「 blog 」という単語を検索してください。 タイトルとコンテンツフィールドが短いブログ記事(最初の記事、タイトルは ブログタイトル)が検索結果ウィジェットに最初に表示されます。
位置情報認識機能を持ったブループリントを設定する
ipstackサービスの設定と、ジオポイントデータを含む検索ドキュメントの準備が整ったので、検索ユーザーとの近接度に基づいて特定の検索結果を優先的に表示するブループリントを設定する準備ができました。
-
グローバルメニュー → アプリケーション → ブループリント に移動します。
-
[新規]をクリックします。
-
新しい検索ブループリントウィンドウで、ブループリントに名前(必須)と説明(任意)を入力します。
-
クエリビルダータブのクエリ要素を使用して、ブースト近接要素を追加します。
- フィールドを
expando__keyword__custom_fields__location_geolocationとして設定します。 - 減衰を0.8に設定します。
- スケールを10kmに設定します。
- ブーストの値を100に設定します。

- フィールドを
-
設計図を作成・設定しながら、テストを行ってください。 をクリックしてプレビューをご覧ください。

-
ユーザーの検索エクスペリエンスを自分の地域で再現するには、歯車アイコン(
)をクリックして、パブリックIPv4アドレスを検索コンテキストに設定します。- キー:
search.experiences.ip.address。 - 値:
[自分のパブリックIPV4アドレス]。
[完了] をクリックします。
- キー:
-
キーワード とブログ を入力し、あなたの現在地に近い位置情報付きブログエントリが、より遠いブログエントリよりも先に返されることを確認してください。
-
設計図の作成が完了したら、 保存 をクリックします。
これでLiferayの検索ページにブループリントを適用できます。
送信元IPアドレスからの近さに基づいて文書を評価するガウス関数を調整する必要があるかもしれません。
減衰 は、アセットとユーザーとの近接度がスケールと等しい場合にブースト値を減らす係数を定義します。
スケール は、ユーザーの IP アドレスの位置からの距離であり、これを超えると結果の関連性が低下し始めます。
ブースト は、定義されたスケール内で結果をブーストするための数値です。
例えば、ユーザーから10km以内の位置情報に基づく検索結果に対して100のブーストを指定し、減衰係数を0.5と定義した場合、ユーザーからちょうど10km離れた検索結果は最大ブースト値の半分を受け取るため、50だけブーストされます。 10km以上の距離では、ガウス関数が残りのスコアを決定することになります。
詳細については、 Elastic の Function Score Query ドキュメントを参照してください。