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 バージョン間でスキーマが変更された場合、古い要素の 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 つあります: elementDefinitiontitle_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
               }
            }
         ]
      }
   }

要素 構成の定義

configuration プロパティには、ネストされたプロパティ queryConfigurationqueryEntriesが保持されます。

queryEntries JSON を詳しく見てみると、プロパティ 条件有効postFilterClauses、および 再スコアを含めることができます。

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

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

UI 構成の各フィールドに追加できる構成プロパティがいくつかあります。

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