検索ブループリント要素のリファレンス
要素は、 検索ブループリントの基本的な構成要素の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 要素を Blueprint に追加する方法については、 検索エクスペリエンスのパーソナライズ を参照してください。

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

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

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

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

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

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

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

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

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

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