要素の作成
検索ブループリントには、 システム要素が多数付属しています。 システム要素のいずれもニーズを満たさない場合は、独自の検索ブループリント要素を作成する方法がいくつかあります。
- カスタム JSON 要素 を使用して、検索ブループリント クエリ ビルダー から要素を作成します。
- 要素の追加ソースエディタ を使用して、便利なプレビュー機能やシステム内の定義済みテンプレート変数の一覧など、より強力な要素エディタを使用して要素を作成します。
- システム要素 を複製して、独自のカスタム要素の開発を先行して開始します。
- Elasticsearch クエリ DSLの使用に慣れており、Elasticsearch クエリに基づいて素早く要素を作成する必要がある場合は、「Paste Any Elasticsearch Query」システム要素を使用してください。
カスタム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"
}
}
この要素は、ブループリントのパラメータ設定を使用して追加できるカスタム変数に依存します。 ブループリントにカスタム変数を追加する方法については、 検索ブループリント構成リファレンス を参照してください。
要素追加ソースエディタの使用
要素を作成する際に、より充実した編集体験が得られます。 検索ブループリントの要素セクションから、 追加 (
をクリックします。
要素に名前を付けて、 作成 をクリックします。 要素ソースエディタが表示され、エディタの左側のペインに定義済み変数が表示されます。 JSONエディタに入力すると、オートコンプリート機能によって利用可能なプロパティが表示されます。 利用可能な JSON プロパティについてさらに理解するには、 スキーマの理解 を参照してください。

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

定義済み変数
要素ソースエディタで定義済みの変数を要素に挿入するには、カーソルを目的の場所に置き、左側のサイドバーにある変数をクリックします。 カスタムJSON要素では、変数をエディタに直接入力する必要があります。
詳細については、 定義済み要素変数リファレンス を参照してください。
要素スキーマの理解
要素スキーマ は変更される可能性があります。 Liferayのバージョン間でスキーマが変更された場合、古いElementのJSONをインポートしようとすると失敗する可能性があります。
検索ブループリント要素のスキーマは、 sxp-query-element.schema.json ファイルで定義されています。 REST API Explorerへのアクセス権を持つユーザーは、スキーマをより便利に閲覧できます。 Liferayにログインした状態で、
POST /v1.0/sxp-blueprints エンドポイントエントリを展開します。 下にスクロールして、 スキーマ リンク( 例の値 リンクの隣)をクリックします。

システム要素の構文を調べて、スキーマ要素を使用して要素がどのように構築されているかをよりよく理解してください。
各要素には、必須のトップレベルプロパティが 2 つあります: elementDefinition および title_i18n。 elementDefinition には、 カテゴリ と 構成 → 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
}
}
]
}
}
要素 構成 を定義します
構成 プロパティには、ネストされたプロパティ queryConfiguration → queryEntries が含まれます。
queryEntries JSON を詳しく調べると、プロパティ clauses、 conditions、 enabled、 postFilterClauses、および rescores が含まれる可能性があります。
- 上記のコードスニペットは、
句(要素の配列)を使用して、Blueprint駆動型検索にクエリ句を追加する要素を示しています。クエリに加えて、付加、ブースト、コンテンツ、無効化、フィールドを追加できます。名前、出現、親、タイプ、または値プロパティ。 条件はブール値チェックを提供します。 条件が真の場合、指定された句は検索クエリに含まれます。偽の場合、それらは除外されます。- 要素を無効にするには、
enabledを false に設定します (デフォルトでは true です)。 postFilterClausesを追加します(句要素の配列として)。additive、boost、content、disabled、field、name、occur を追加できます。、親、クエリ、タイプ、または値プロパティ。- クエリ結果の関連性スコアを再計算するには、
rescoresを追加します。query、queryWeight、rescoreQueryWeight、scoreMode、およびwindowSizeを指定します。 詳細については、 Elasticsearch のドキュメント を参照してください。
uiConfiguration プロパティには、ネストされたプロパティ fieldSet と field が含まれています。
UI設定では、各フィールドに複数の設定プロパティを追加できます。
- フィールドの初期値を入力するには、
defaultValueを使用します。 - ブループリントUIでフィールドのヘルプテキストを表示するには、
helpTextと入力します。 - 人間が読めるラベル
を入力してください。 - 要素内の他の場所でフィールドを参照するために使用できる名前
を入力してください。たとえば、フィールド値をクエリ句に渡す場合などです。${configuration.name}。 - フィールドの
タイプを設定します。date、fieldMapping、fieldMappingList(利用可能なフィールドのリスト、ロケール、フィールドブーストを含む)、itemSelector、json、keywords から選択してください。、複数選択、数値、選択、スライダー、およびテキスト typeOptionsプロパティを使用して、各フィールドタイプで使用可能なオプションを設定します。 例えば、選択フィールドに表示されるオプションをに設定します。ブーストは、フィールドごとの数値ブースト値を設定します。形式は、許容される日付形式 を決定します (例:yyyyMMddHHmmss)。nullablenull 値を渡すことができるかどうかを設定します。オプションは選択フィールドのオプションを設定します。必須設定に値が必要かどうかを設定します。ステップは、数値またはスライダーフィールドの数値の増減値を設定します。単位は、数値フィールドの測定単位を設定します。unitSuffixは、単位を持つ数値フィールドの表示単位表記を設定します (たとえば、unitがkmの場合、unitSuffixをkmまたはキロメートルに設定できます)。 )