oo

検索ブループリントの結果の並べ替え

検索ブループリントに ソート設定 を追加して、検索結果の順序を制御します。

  1. グローバルメニュー(Global Menu) を開き、 [アプリケーション] タブをクリックし、 [ブループリント] を選択します。

  2. ブループリントを作成するか、既存のブループリントを開きます。

  3. Configuration] タブをクリックし、[Sort Configuration]テキストエリアにJSONを入力します。

JSONを入力して、ブループリントの結果を並べ替えます。

important
  • 検索ページでソートを設定するために、Sort widget と検索ブループリントの両方を使用することは避けてください。 Liferayは一貫した動作を保証できません。

  • 以下の例は簡単なものです。 堅牢なソート構成は、あらゆるシナリオを考慮する必要があります。 例えば、検索結果ドキュメントにソートフィールドが含まれていない場合、 missing パラメーターを使用してソートの動作を設定することができます。

    詳しくは、 Elasticsearch’s sorting documentation をご覧ください。

例1:タイトル順に並べ替える

ソート設定とは、昇順(asc)または降順(desc)で並べ替えるフィールドを定義する sorts 配列を持つJSONオブジェクトです。

{
   "sorts": [
      {
         "localized_title_${context.language_id}_sortable": "asc"
      }
   ]
}
tip
  • 特に title のようなローカライズされたテキストフィールドでは、類似した名前のフィールドバリエーションが検索ドキュメントに含まれることがあります。 localized_title_en_US_sortableなど、フィールドのローカライズされ、ソート可能なキーワードのバリエーションを使用します。 各エンティティのドキュメントを確認し、使用可能なフィールドを探します。 例えば、title_sortableは共通のフィールドですが、同じエンティティにlocalized_title_en_US_sortableも含まれることがあります。

  • 言語IDを直接入力する代わりに、${context.language_id} 変数を使用して、4文字の言語コード (例: en_US) を現在の言語で自動入力することができます。

  • 文書のフィールドを見るには、ブループリントのツールバーの_Preview_をクリックし、検索を実行し、その結果のフィールドを展開します。

例2:ストラクチャー項目による並べ替え

Webコンテンツストラクチャーフィールドは、検索エンジンのドキュメントにネストされたフィールドとしてインデックスされます。

ドキュメントを表示すると、入れ子になったプロパティは ddmFieldArrayの下に表示されます。

"ddmFieldArray" : [
          {
            "ddmFieldName" : "ddm__keyword__30805__department_en_US",
            "ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
            "ddmFieldValueKeyword_en_US" : "true",
            "ddmFieldValueKeyword_en_US_String_sortable" : "true"
          }
]

ネストされたフィールドを含むドキュメントを表示するには、

  1. ドキュメント_sourceの取得を有効にするには、ブループリントの [設定] タブを開き、このJSONを[詳細設定]ボックスに入力します。

    {
       "source": {
          "fetchSource": true
       }
    }
    
  2. ツールバーの プレビュー をクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。

ネストされたフィールドの場合、ソート構成のフィールド宣言はより複雑になります。

{
   "sorts": [
      {
         "ddmFieldArray.ddmFieldValueKeyword_${context.language_id}_String_sortable": {
            "nested": {
               "nested_path": "ddmFieldArray",
               "nested_filter": {
                  "term": {
                     "ddmFieldArray.ddmFieldName": {
                        "value": "ddm__keyword__30805__department_${context.language_id}"
                     }
                  }
               }
            },
            "order": "asc"
         }
      }
   ]
}

例3:オブジェクトフィールドによる並べ替え

オブジェクトエントリーフィールドは、検索エンジンドキュメントにネストされたフィールドとしてインデックスされます。

ドキュメントを表示する際、オブジェクトのネストされたプロパティは nestedFieldArrayの下に表示されます。

"nestedFieldArray" : [
            {
              "fieldName": "total",
              "valueFieldName": "value_integer",
              "value_integer": "8"
            }
]

ネストされたフィールドを含むドキュメントを表示するには、

  1. ドキュメント_sourceの取得を有効にするには、ブループリントの [設定] タブを開き、このJSONを[詳細設定]ボックスに入力します。

    {
       "source": {
          "fetchSource": true
       }
    }
    
  2. ツールバーの プレビュー をクリックし、ネストしたフィールドを持つ結果を検索し、そのフィールドを展開します。

この例では、オブジェクトの整数フィールドで並べ替えます。

{
   "sorts": [
      {
         "nestedFieldArray.value_integer": {
            "nested": {
               "nested_path": "nestedFieldArray",
               "nested_filter": {
                  "term": {
                     "nestedFieldArray.fieldName": "total"
                  }
               }
            },
            "order": "desc"
         }
      }
   ]
}

関連トピック

Capability: