検索ブループリントの結果の並べ替え
検索ブループリントに ソート設定 を追加して、検索結果の順序を制御します。
-
グローバルメニュー(
) を開き、 [アプリケーション] タブをクリックし、 [ブループリント] を選択します。
-
ブループリントを作成するか、既存のブループリントを開きます。
-
[Configuration] タブをクリックし、[Sort Configuration]テキストエリアにJSONを入力します。
-
検索ページでソートを設定するために、Sort widget と検索ブループリントの両方を使用することは避けてください。 Liferayは一貫した動作を保証できません。
-
以下の例は簡単なものです。 堅牢なソート構成は、あらゆるシナリオを考慮する必要があります。 例えば、検索結果ドキュメントにソートフィールドが含まれていない場合、
missing
パラメーターを使用してソートの動作を設定することができます。詳しくは、 Elasticsearch’s sorting documentation をご覧ください。
例1:タイトル順に並べ替える
ソート設定とは、昇順(asc
)または降順(desc
)で並べ替えるフィールドを定義する sorts
配列を持つJSONオブジェクトです。
-
特に
title
のようなローカライズされたテキストフィールドでは、類似した名前のフィールドバリエーションが検索ドキュメントに含まれることがあります。localized_title_en_US_sortable
など、フィールドのローカライズされ、ソート可能なキーワードのバリエーションを使用します。 各エンティティのドキュメントを確認し、使用可能なフィールドを探します。 例えば、title_sortable
は共通のフィールドですが、同じエンティティにlocalized_title_en_US_sortable
も含まれることがあります。 -
言語IDを直接入力する代わりに、
${context.language_id}
変数を使用して、4文字の言語コード (例:en_US
) を現在の言語で自動入力することができます。 -
文書のフィールドを見るには、ブループリントのツールバーの_Preview_をクリックし、検索を実行し、その結果のフィールドを展開します。
例2:ストラクチャー項目による並べ替え
Webコンテンツストラクチャーフィールドは、検索エンジンのドキュメントにネストされたフィールドとしてインデックスされます。
ドキュメントを表示すると、入れ子になったプロパティは ddmFieldArray
の下に表示されます。
ネストされたフィールドを含むドキュメントを表示するには、
-
ドキュメント
_source
の取得を有効にするには、ブループリントの [設定] タブを開き、このJSONを[詳細設定]ボックスに入力します。 -
ツールバーの プレビュー をクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。
ネストされたフィールドの場合、ソート構成のフィールド宣言はより複雑になります。
例3:オブジェクトフィールドによる並べ替え
オブジェクトエントリーフィールドは、検索エンジンドキュメントにネストされたフィールドとしてインデックスされます。
ドキュメントを表示する際、オブジェクトのネストされたプロパティは nestedFieldArray
の下に表示されます。
ネストされたフィールドを含むドキュメントを表示するには、
-
ドキュメント
_source
の取得を有効にするには、ブループリントの [設定] タブを開き、このJSONを[詳細設定]ボックスに入力します。 -
ツールバーの プレビュー をクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。
この例では、オブジェクトの整数フィールドで並べ替えます。