検索ブループリント要素のリファレンス
要素は、 検索ブループリントの基本的な構成要素の 1 つです。 利用可能なすべての要素を調べるには、グローバル メニュー (
) → アプリケーション → ブループリント に移動します。 [要素]タブを開き、目的の要素を見つけ、それをクリックします。 要素の完全なJSON表現が表示されます。
ブループリントに要素を追加するには、 ブループリントを作成 し、クエリ ビルダー → クエリ要素サイドバーを使用して要素を検索および追加します。

ブループリント → クエリ要素画面で作業中に任意の要素のクエリ構成 JSON を表示するには、アクション アイコン (
) → 要素 JSON の表示をクリックします。
各要素は、ブループリントのタイトルバーにあるトグルスイッチを使用して、ブループリントで無効または有効にすることができます。 ブループリント内の要素を効率よく表示するには、要素のタイトル バーにある下矢印アイコン (
) を使用して要素の内容を折りたたむことができます。
各要素には設定オプションがあり、その多くは Elasticsearch クエリ DSL ドキュメントで定義されているクエリの属性に直接対応しています。 特定のクエリタイプへのリンクは、適宜、以下に記載されています。
Liferay 2024.Q1 以降、アセット カテゴリとサイトを使用する要素では、基本テキスト フィールドに ID を要求する代わりにセレクターが提供されます。 数値 ID を取得する必要はなくなりましたが、必要に応じて引き続き ID を手動で入力できます。

いくつかの結果をブーストする
Elasticsearch クエリに設定された ブースト は、一致する結果の関連性スコアを調整します。 1.0を超えるとスコアが増加し、0から1.0の間の値ではスコアが減少します。
特定の結果をブーストする場合、ブースト値を調整する必要があります。 プレビュー サイドバー を使用して、ドキュメントのスコアリング方法を確認し、ブースト値を微調整します。
すべてのキーワード一致をブースト
複数の一致するクエリを使用すると、検索キーワードが指定されたフィールドに一致する場合、検索結果をブーストします。 要素の複数の一致するクエリ句を全体としてブーストすることも、個々のフィールドへの一致をブーストすることも可能です。 [Text to Match]設定フィールドはオプションです。空白のままだと、検索ユーザーのキーワードがクエリに渡されます。

- [Field]:検索するフィールドと、それらを個別にブーストするかどうかを選択します。
- [Match Type]:Elasticsearchが内部で処理するクエリの方法を指定します。 Most Fields は、指定したフィールドごとにMatchクエリを作成し、スコアを結合するというもので、おそらく最も基本的なものでしょう。
- 「Boost]:一致する結果の関連性スコアを調整します。 デフォルト値は1.0なので、1.0を超えるとスコアが上がり、0〜1.0だとスコアが下がります。
- [Text to Match]:ハードコードされたキーワードに一致させるか、空白のままユーザーの検索キーワードに一致させるかを選択します。
外部参照: Elasticsearch マルチマッチ クエリのドキュメントを参照してください。
アセットタイプをブースト
指定したアセットタイプをブーストします。 登録済みの アセット のリストからアセット タイプ (必須) を選択し、ブースト値を設定します。

現在の言語に対してコンテンツをブースト
context.language_idフィールドに格納されている、現在のセッション言語と一致するデフォルト言語を持つページとウェブコンテンツをブーストします。 ブースト値を設定します。

キーワード一致でカテゴリ内のコンテンツをブースト
ユーザーの検索キーワードが設定したキーワードのいずれかを含む場合、カテゴリ内のコンテンツをブーストします。 キーワードと資産カテゴリ外部参照コードは必須です。

ある期間だけカテゴリ内のコンテンツをブースト
指定した期間だけカテゴリ内のコンテンツをブーストします。 資産カテゴリの外部参照コード、開始時刻、終了時刻はすべて必須です。 この要素は条件付きです。現在の日付が設定された日付範囲外の場合、クエリとそのブーストは実行されません。

[Boost Contents in a Category for a User Segment]
指定された ユーザー セグメントに属するユーザー向けに、カテゴリ内のコンテンツをブーストします。 複数のユーザーセグメントIDを入力する場合は、テキストボックスにカンマを入力し、次のIDの入力を開始します。 資産カテゴリ名 (ID) とユーザー セグメント ID は必須フィールドです。 これは条件付きの要素です。user.active_segment_entry_idsに指定したセグメントIDが含まれている場合のみ、クエリが実行されブーストされることになります。

ゲストユーザーに対してカテゴリ内のコンテンツをブースト
ユーザーがログインしていない場合にカテゴリ内のコンテンツをブーストします。 資産カテゴリ外部参照コードが必要です。 これは条件付き要素で、user.is_signed_inパラメータがfalseの場合にのみクエリーが実行され、ブーストされます。

新規ユーザーアカウントに対してカテゴリ内のコンテンツをブースト
指定した時間内に作成されたユーザーアカウントに対してカテゴリ内のコンテンツをブーストします。 資産カテゴリの外部参照コードと時間範囲 (日数) は必須です。 指定された日数以内に作成されたアカウントは新規アカウントとみなされ、そのユーザーに対して特定の結果がブーストされます。 これは条件付き要素です。user.create_dateパラメータが指定された時間範囲内の値を持つ場合にのみ、クエリが実行され、ブーストされます。

時間帯に対してカテゴリ内のコンテンツをブースト
時間帯に応じてカテゴリ内のコンテンツをブーストします。 これらの時間範囲から一つを選択します。
- 午前:4AM~12PM
- 午後12時~17時
- 夕方:5PM~8PM
- 夜間:午後8時〜午前4時

カテゴリ内のコンテンツをブースト
指定したカテゴリ内のコンテンツをブーストして推奨します。 資産カテゴリ外部参照コードが必要です。

マイサイトのコンテンツをブースト
ユーザーがメンバーになっているサイトのコンテンツをブーストします。 この要素には必須項目はありません。他のブースト要素と同様に、ブーストの値を任意に設定します。 検索コンテキストには、現在のユーザーのグループを追跡するためのパラメータ user.group_idsがあり、現在のサイトのIDがそのリストの一部である場合、クエリが一致しブーストが適用されます。

より多くのバージョンでコンテンツをブースト
より多くのバージョンを持つ結果をブーストします。 この要素は、field_value_factor関数を用いて、versionCount_sortableキーワードフィールドに対して関数スコアクエリを実行します。 [Factor]と[Modifier]は必須であり、[要素]で設定可能です。 係数、修飾子、バージョン数、ブーストの組み合わせにより、結果のブーストの仕方が決まります。

- 係数:フィールドの値を乗じる係数を設定する。デフォルトは1.2である。
- 修飾子:フィールドの値に適用する修飾子を使用します。デフォルトは平方根です。 その他、None、log、log1p、log2p、ln、ln1p、ln2p、正方形、逆数があります。
- ブースト:ブーストの初期値を設定します。デフォルトは10です。 ブースト値と関数スコアを掛けて、最終的なスコア調整値を取得します。
例:あるドキュメントのバージョン数が8で、要素にデフォルト値が使用されていた場合、そのドキュメントのスコアは以下のように計算されます。
10 * (sqrt (1.2 * 8))
したがって、この要素のために、このドキュメントには、約30のスコアが追加されることになります。
外部参照: Elasticsearch 関数スコアクエリ ドキュメントを参照してください。
情報の新しさによるブースト
ガウス関数を使用して最近変更されたコンテンツをブーストします。

ドキュメントの更新時間をスコアリングするために使用するガウス関数は、調整が必要な場合があります。 更新時間要素のブーストの設定で、減衰、スケール、オフセット、ブーストを調整することができます。
- 減衰は、アセットの更新時間がスケールとオフセットの合計と等しい場合に、ブースト値を減少させる係数を定義します。
- オフセットとは、現在から(過去における)日数で、それを超えると、減衰関数によって計算された結果の関連性が低下し始めます。
- スケールは、オフセットに追加され、結果の関連性が減衰パラメータに等しくなる今から(過去の)日数を決定します。
- ブーストは、定義されたスケール内の結果をブーストするための開始値です。
外部参照: 詳細については、Elasticsearch 関数スコアクエリ のドキュメントを参照してください。
長めのコンテンツをブースト
関数スコアクエリのフィールド値係数を使用し、ユーザーの現在の言語のより長いコンテンツフィールドデータで結果を向上させます。
${context.language_id} パラメータは、数値フィールドである content_${context.language_id}_length_sortable フィールドの値を取得するために使用されます。 数値フィールドの値に関数(デフォルトでは自然対数)を用いて、ドキュメントのスコアの修正値を計算します。

要素の設定でブースト、係数、修飾子を調整することができます。
- ブーストは、関数でスコアリングされた結果をブーストするための数値です。
- 係数は、フィールドの値に乗算する値です。
- 修飾子は、フィールドの値を変更する際に使用する関数を定義します。
外部参照: 詳細については、Elasticsearch 関数スコアクエリ のドキュメントを参照してください。
近さのブースト
検索ユーザーに近いコンテンツをガウス関数でブーストします。
Boost Proximity 要素は、 ipstack サービスを使用して、ドキュメント内の geopoint フィールドでマークされているように、検索結果をユーザーの位置に近いものにブーストします。
ipstack サービスおよび Boost Proximity Element と連携するには、検索ドキュメントに ジオポイント フィールド が必要です。 Liferay には、既存のアセットにカスタム フィールドとして追加できる互換性のある地理位置情報フィールドが含まれています。
ipstack サービスの設定、カスタム位置情報フィールドの使用、ブループリントへの Boost Proximity 要素の追加の詳細については、「 検索エクスペリエンスのパーソナライズ 」を参照してください。

タグ付きコンテンツをブースト
指定したタグのうち 1 つ以上を持つコンテンツをブーストします。 複数のタグ名をカンマ区切りで入力します。

タグ一致をブースト
タグと完全に一致するキーワードを持つコンテンツをブーストします。 検索ユーザーのキーワードとassetTagNames.rawフィールドのコンテンツを比較し(これはassetTagNamesテキストフィールドからキーワードフィールドを作る)、ドキュメント内で用語クエリーが一致すれば、そのスコアを設定した値でブーストします。
外部参照: Elasticsearch の 用語クエリ ドキュメントを参照してください。

キーワード一致で Web コンテンツをブースト
ユーザーの検索キーワードに指定したキーワードが含まれる場合に一定の Web コンテンツをブーストします。 記事IDとキーワードが一致するように設定します。

結果のフィルタリング
検索結果をフィルタリングする場合、ドキュメントのフィールドがクエリに一致するかというイエスかノーかの質問をすることになります。 この場合、関連性(=どの程度マッチしているか)は気にしないようにします。 検索結果に表示される範囲を絞り込むために、いくつかのフィルタリング要素が提供されています。 それらはすべて、メインの 検索リクエストの フィルター ブロックにクエリを提供します。
用語の完全一致でフィルター
1つまたは複数の用語をフィールド値にマッチさせる(用語クエリを使用する)ことによって、結果をフィルタリングします。 フィルターが適用されるためには、少なくとも1つは一致しなければなりません。

外部参照: Elasticsearch 用語クエリ ドキュメントを参照してください。
検索をある期間内に作成されたコンテンツに制限
Rangeクエリで結果をフィルタリングします。 時間範囲を設定します。
外部参照: Elasticsearch Range クエリ ドキュメントを参照してください。

検索を HEAD バージョンに制限
Webコンテンツの最新版の記事のみを返すように検索を制限します。 この要素は、Liferay検索フレームワークのクエリ句の機能を複製したもので、高度なユースケースで最も有用です。 例えば、Liferayの検索フレームワークがデフォルトの検索句を提供しないようにした場合、この要素を使用して失われた機能の一部を復元することが可能です。

検索をマイコンテンツに制限
検索をユーザーが所有者になっているコンテンツに制限します。 この要素は、userIdフィールドに対する用語クエリで結果をフィルタリングし、user.idコンテキストパラメータと一致させます。

検索をマイサイトに制限
検索範囲をユーザーがメンバーになっているサイトに制限します。 この要素は、scopeGroupIdフィールドに対する用語クエリで結果をフィルタリングし、user.group_idscontextパラメータと一致させます。

検索を PDF ファイルに制限
PDFファイルに限定して検索します。 この要素は、mimeTypeフィールドに対する用語クエリによって結果をフィルタリングし、その値をハードコードされたクエリ値application_pdfと一致させます。

検索を公開コンテンツに制限
検索を公開されているコンテンツに制限します。 この要素は、Liferay検索フレームワークのクエリ句の機能を複製したもので、高度なユースケースで最も有用です。 例えば、Liferayの検索フレームワークがデフォルトの検索句を提供しないようにした場合、この要素を使用して失われた機能の一部を復元することが可能です。
この要素は、 ステータス フィールドの Term クエリを使用して結果をフィルタリングし、その値を、 0のハードコードされた値と照合します。この値は、 Liferay のワークフロー システムで公開されたコンテンツを表します。

検索を現在のサイトに制限
検索を現在のサイトに制限します。 この要素は、scopeGroupIdフィールドの用語クエリを使用して結果をフィルタリングし、その値をコンテキストパラメータcontext.scope_groupIdと一致させます。
この要素の機能は、 検索バーの スコープ構成オプションと重複します。

検索をこれらのサイトに制限
検索範囲を指定したサイトに制限します。 scopeGroupExternalReferenceCode フィールドの用語クエリを使用して結果をフィルタリングし、その値を構成されたサイト外部参照コードと照合します。

この要素の機能は、 検索バーの スコープ構成オプションと重複します。 この要素が動作するためには、検索バーのスコープを[すべて]に設定する必要があります。
一部の結果を隠す
クエリをMust Not occurrence句を含むブールクエリで折り返すことで、クエリにマッチした場合に結果を非表示にすることができます。
外部参照: Elasticsearch ブールクエリ ドキュメントを参照してください。
用語の完全一致で非表示
指定したフィールドで完全に一致する用語を含むコンテンツを非表示にします。 ローカライズされたテキストフィールドを選択すると、ローカライズオプションが設定に表示されます。

コメントを非表示
コメントを検索しません。 この要素は、ディスカッションフィールドを持つドキュメントを検索します。 フィールドが存在し、その内容が false以外の場合、そのドキュメントは検索結果に含まれません。

ゲストユーザーに対してカテゴリ内のコンテンツを非表示
ユーザーがログインしていない場合、カテゴリ内の結果を非表示にします。 これは条件付き要素です。 user.is_signed_in コンテキスト パラメータが falseの場合、構成された資産カテゴリ外部参照コードのいずれかに一致する groupAssetCategoryExternalReferenceCodes フィールドを持つ結果は返されません。

カテゴリ内のコンテンツを非表示
指定されたカテゴリを持つ結果を非表示にします。 groupAssetCategoryExternalReferenceCodes フィールドで用語クエリが実行されます。 設定された資産カテゴリ外部参照コードのいずれかが一致する場合、ドキュメントは検索結果に返されません。

検索できないとマークされたアセットを非表示にします。 この要素は、Liferay検索フレームワークのクエリ句の機能を複製したもので、高度なユースケースで最も有用です。 例えば、Liferayの検索フレームワークがデフォルトの検索句を提供しないようにした場合、この要素を使用して失われた機能の一部を復元することが可能です。
この要素は、返される結果がhiddenというフィールドを持ってはならない事を指定します、もし持っている場合、その値はfalseでなければなりません。

タグ付きコンテンツを非表示
指定されたタグを持つ結果を非表示にします。 assetTagNames.rawフィールドに対して用語クエリが実行されます(rawフィールドは assetTagNames テキストフィールドからキーワードフィールドを作成します)。 設定されているアセットタグが一致する場合は、検索結果にドキュメントが表示されません。

その他の要素
任意の Elasticsearch クエリを貼り付け
任意の Elasticsearch DSL クエリの本文をそのまま形で要素に貼り付けます。 occur句を指定します。 この要素は、提供されたJSON文字列を受け取り、バックグラウンドでそこからWrapperクエリを作成します。
Liferay SaaS では Basic Elasticsearch ライセンスが使用されるため、一部のクエリ タイプは使用できません。 詳細については、 Elastic のサブスクリプションの比較を参照してください。
例えば、タイトルがクエリキーワードbrunoに一致するドキュメントが返されないようにするには、3つの共通タイトルフィールドに複数の一致するクエリを追加し、Must Not occur句を指定します。

{
"multi-match": {
"fields": [
"localized_title_en_US",
"title_en_US",
"title",
"localized_content_en_US"
],
"query": "bruno"
}
}
外部参照: Elasticsearch ラッパー クエリ ドキュメントを参照してください。
スケジュール設定の認識
表示期限が未来でないコンテンツのみを表示し、期限切れのコンテンツは表示しません。 この要素は、Liferay検索フレームワークのクエリ句の機能を複製したもので、高度なユースケースで最も有用です。 例えば、Liferayの検索フレームワークがデフォルトの検索句を提供しないようにした場合、この要素を使用して失われた機能の一部を復元することが可能です。
Lucene構文で検索
1つまたは複数のフィールドにマッチさせるには、検索文字列のクエリ構文を使用します。 検索キーワードがすべて一致しなければならない(AND)か、1つだけ一致しなければならない(OR)かを決定する際に使用するデフォルトのブール演算子(ORまたはAND)を指定します。 この要素では、ブール演算子やワイルドカードなどを使って、より高度な検索キーワードを入力することができます。
外部参照: Elasticsearch クエリ文字列クエリ ドキュメントを参照してください。
ステージングの認識
ライブサイトで公開されているコンテンツのみを表示します。 公開されたコンテンツやステージコンテンツをステージングサイトに表示します。 この要素は、Liferay検索フレームワークのクエリ句の機能を複製したもので、高度なユースケースで最も有用です。 例えば、Liferayの検索フレームワークがデフォルトの検索句を提供しないようにした場合、この要素を使用して失われた機能の一部を復元することが可能です。
複数フィールドに対するテキストの一致
複数のテキストフィールドに対して一致するテキストを検索します。 検索ユーザーのキーワードか、要素設定で設定したText to Matchのどちらかに一致させます。 これは、Element の スイス アーミー ナイフ であり、複数のフィールドに対して高度に設定可能な全文クエリを追加します。
- 検索するフィールドを選択するには、フィールド設定を使用します。 分析済みのテキストフィールドのみを選択する。
- 演算子は、分析したすべての検索キーワードを各フィールドに表示するか(AND)、1つだけを各フィールドに表示するか(OR)を決定します。 正確な動作は、マッチタイプの影響を受けます。
- マッチタイプは、Elasticsearchが内部的にクエリを処理する方法を決定します。 Most Fieldsはおそらく最も基本的なもので、指定したフィールドごとにMatchクエリを作成し、そのスコアを結合するものです。
- あいまいさは、不正確な一致に関する動作を設定します。 0、1、または 2 を設定すると、クエリが一致を返すために許可される レーベンシュタイン編集距離 が直接指定されます。 AUTOは、検索される用語の長さに基づいて編集距離を生成します。 詳細については、 Elasticsearch のあいまいさに関するドキュメント を参照してください。
- 最低必須一致は、検索で返されるドキュメントのために、一致しなければならない最小の句の数を設定します。 詳細については、 Elasticsearch の minimum_should_match ドキュメントを参照してください。
- スロープは、語句および語句プリフィックスマッチタイプで使用されます。 語句がずれても一致する単語数を指定することで、不正確なフレーズの一致が可能になります。 例えば、語句タイプでスロープが1の場合、「liferayブログ」を検索しても、「Liferay DXPブログ」を含むフィールドに一致する可能性があります。
- この要素が提供する句に一致するドキュメントをブーストするようブーストを設定します。
- クエリ句を一致させる値をハードコードしたい場合は、Text to Matchを設定します。 ユーザーのキーワードで検索したいだけの場合は、空欄にしてください。
外部参照: Elasticsearch マルチマッチクエリ ドキュメントを参照してください。