Creating and Managing Elements
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

要素の作成

検索ブループリントには、 システム要素が多数付属しています。 システム要素のいずれもニーズを満たさない場合は、独自の検索ブループリント要素を作成する方法がいくつかあります。

カスタムJSON要素の使用

他のブループリントで再利用することを意図していない要素は、ブループリントの作業中に クエリ ビルダー に追加できます。 これらは元の設計図でのみ利用可能であり、設計図検索の要素セクションでは表示されません。

カスタムJSON要素をビルダーに追加し、定型JSONの編集を開始します。

{
   "description_i18n": {
      "en_US": "Editable JSON Text Area"
   },
   "elementDefinition": {
      "category": "custom",
      "configuration": {},
      "icon": "custom-field"
   },
   "title_i18n": {
      "en_US": "Custom JSON Element"
   }
}

JSONエディタに入力すると、オートコンプリート機能によって利用可能なプロパティが表示されます。 これらをさらに理解するには、 スキーマの理解 を参照してください。

カスタムJSON要素にはあらゆる要素を記述できますが、通常、この方法はクエリ句や条件を追加するだけのシンプルな要素に限定するのが最適です。 多くの場合、これらは uiConfiguration セクションを必要とせず、要素で使用できる事前定義されたテンプレート変数を多用しません。 より複雑なケースでは、 要素ソースエディタ を使用してください。

例えば、以下の「ジャーナル記事を除外する」要素は、カスタムJSON要素に基づいています。 これは、 exclude.journal_articles というパラメーターが true の場合にのみ要素のクエリが適用される条件を追加します。 このクエリは、結果が Web コンテンツ記事の entryClassName フィールドと一致しないように、 must_not term クエリ句を追加します。

{
   "description_i18n": {
      "en_US": "Exclude journal articles from the search."
   },
   "elementDefinition": {
      "category": "hide",
      "configuration": {
         "queryConfiguration": {
            "queryEntries": [
               {
                  "clauses": [
                     {
                        "context": "query",
                        "occur": "filter",
                        "query": {
                           "bool": {
                              "should": [
                                 {
                                    "bool": {
                                       "must_not": [
                                          {
                                             "term": {
                                                "entryClassName": {
                                                "value": "com.liferay.journal.model.JournalArticle"}
                                             }
                                          }
                                       ]
                                    }
                                 },
                                 {
                                    "bool": {
                                       "must": [
                                          {
                                             "term": {
                                                "discussion": false
                                             }
                                          }
                                       ]
                                    }
                                 }
                              ]
                           }
                        }
                     }
                  ],
                  "condition": {
                     "contains": {
                        "parameterName": "exclude.journal_articles",
                        "value": "true"
                     }
                  }
               }
            ]
         }
      },
      "icon": "hidden"
   },
   "title_i18n": {
      "en_US": "Exclude Journal Articles"
   }
}

この要素は、ブループリントのパラメータ設定を使用して追加できるカスタム変数に依存します。 ブループリントにカスタム変数を追加する方法については、 検索ブループリント構成リファレンス を参照してください。

要素追加ソースエディタの使用

要素を作成する際に、より充実した編集体験が得られます。 検索ブループリントの要素セクションから、 追加 (Add をクリックします。

要素に名前を付けて、 作成 をクリックします。 要素ソースエディタが表示され、エディタの左側のペインに定義済み変数が表示されます。 JSONエディタに入力すると、オートコンプリート機能によって利用可能なプロパティが表示されます。 利用可能な JSON プロパティについてさらに理解するには、 スキーマの理解 を参照してください。

要素ソースエディタで要素を作成します。

UI 構成オプションは、Element JSON の uiConfiguration プロパティで定義されます。 クエリ ビルダーで要素の設定ウィンドウをプレビューするには、(キャンセル ボタンの横にある) プレビュー リンクをクリックします。

要素設定ウィンドウをプレビューします。

定義済み変数

要素ソースエディタで定義済みの変数を要素に挿入するには、カーソルを目的の場所に置き、左側のサイドバーにある変数をクリックします。 カスタムJSON要素では、変数をエディタに直接入力する必要があります。

詳細については、 定義済み要素変数リファレンス を参照してください。

要素スキーマの理解

警告

要素スキーマ は変更される可能性があります。 Liferayのバージョン間でスキーマが変更された場合、古いElementのJSONをインポートしようとすると失敗する可能性があります。

検索ブループリント要素のスキーマは、 sxp-query-element.schema.json ファイルで定義されています。 REST API Explorerへのアクセス権を持つユーザーは、スキーマをより便利に閲覧できます。 Liferayにログインした状態で、

http://localhost:8080/o/api?endpoint=http://localhost:8080/o/search-experiences-rest/v1.0/openapi.json

POST /v1.0/sxp-blueprints エンドポイントエントリを展開します。 下にスクロールして、 スキーマ リンク( 例の値 リンクの隣)をクリックします。

APIエクスプローラーから要素スキーマを調べてください。

ヒント

システム要素の構文を調べて、スキーマ要素を使用して要素がどのように構築されているかをよりよく理解してください。

各要素には、必須のトップレベルプロパティが 2 つあります: elementDefinition および title_i18nelementDefinition には、 カテゴリ構成queryConfiguration プロパティを含める必要があります。

{
	"elementDefinition": {
		"category": "custom",
		"configuration": {
			"queryConfiguration": {}
		}
	},
	"title_i18n": {
		"en_US": "Custom JSON Element"
	}
}

タイトル欄に、要素のタイトルテキストを必要な言語数だけ設定してください。

要素 の作成 elementDefinition

elementDefinition で作業の大部分を行います。 そのプロパティには、 カテゴリ設定アイコン、および uiConfiguration が含まれます。

カテゴリ は、要素の動作を分類する文字列を提供します。 マッチブースト条件付きフィルタ非表示、または カスタム を指定します。

構成 は、 queryConfigurationを提供します。これは、 queryEntries プロパティを介して、提供するクエリ句を保持します。

アイコン は、要素に使用する利用可能なアイコンを設定する文字列を設定します。 Lexicon Icon Library にある画像はすべて使用できます (例: サムズアップ)。

uiConfiguration は、UI に表示する構成要素を設定し、設定された値とともにカスタム要素に渡します。

例えば、 entryClassName フィールドで用語クエリの一致を強化する要素は、次のようにクエリと UI を設定できます。

"configuration": {
   "queryConfiguration": {
      "queryEntries": [
         {
            "clauses": [
               {
                  "query": {
                     "term": {
                        "entryClassName": {
                           "boost": "${configuration.boost}",
                           "value": "${configuration.entry_class_name}"
                        }
                     }
                  }
               }
            ]
         }
      ]
   }
},
"uiConfiguration": {
   "fieldSets": [
      {
         "fields": [
            {
               "defaultValue": 1,
               "label": "Boost",
               "name": "boost",
               "type": "number",
               "typeOptions": {
                  "min": 0
               }
            }
         ]
      }
   }

要素 構成 を定義します

構成 プロパティには、ネストされたプロパティ queryConfigurationqueryEntries が含まれます。

queryEntries JSON を詳しく調べると、プロパティ clausesconditionsenabledpostFilterClauses、および rescores が含まれる可能性があります。

  • 上記のコードスニペットは、 (要素の配列)を使用して、Blueprint駆動型検索にクエリ句を追加する要素を示しています。 クエリに加えて、 付加ブーストコンテンツ無効化フィールドを追加できます。 名前出現タイプ、または プロパティ。
  • 条件 はブール値チェックを提供します。 条件が真の場合、指定された句は検索クエリに含まれます。偽の場合、それらは除外されます。
  • 要素を無効にするには、 enabled を false に設定します (デフォルトでは true です)。
  • postFilterClauses を追加します( 要素の配列として)。 additiveboostcontentdisabledfieldnameoccur を追加できます。クエリタイプ、または プロパティ。
  • クエリ結果の関連性スコアを再計算するには、 rescores を追加します。 queryqueryWeightrescoreQueryWeightscoreMode、および windowSize を指定します。 詳細については、 Elasticsearch のドキュメント を参照してください。

uiConfiguration プロパティには、ネストされたプロパティ fieldSetfield が含まれています。

UI設定では、各フィールドに複数の設定プロパティを追加できます。

  • フィールドの初期値を入力するには、 defaultValue を使用します。
  • ブループリントUIでフィールドのヘルプテキストを表示するには、 helpText と入力します。
  • 人間が読めるラベル を入力してください
  • 要素内の他の場所でフィールドを参照するために使用できる名前 を入力してください。たとえば、フィールド値をクエリ句に渡す場合などです。 ${configuration.name}
  • フィールドのタイプを設定します。 datefieldMappingfieldMappingList (利用可能なフィールドのリスト、ロケール、フィールドブーストを含む)、 itemSelectorjsonkeywords から選択してください。複数選択数値選択スライダー、および テキスト
  • typeOptions プロパティを使用して、各フィールドタイプで使用可能なオプションを設定します。 例えば、選択フィールドに表示されるオプションを に設定します。
    • ブースト は、フィールドごとの数値ブースト値を設定します。
    • 形式 は、許容される日付形式 を決定します (例: yyyyMMddHHmmss)。
    • nullable null 値を渡すことができるかどうかを設定します。
    • オプション は選択フィールドのオプションを設定します。
    • 必須 設定に値が必要かどうかを設定します。
    • ステップ は、数値またはスライダーフィールドの数値の増減値を設定します。
    • 単位 は、数値フィールドの測定単位を設定します。
    • unitSuffix は、単位を持つ数値フィールドの表示単位表記を設定します (たとえば、 unitkmの場合、 unitSuffixkm または キロメートル に設定できます)。 )