カスタムフィルターウィジェットの使用
カスタム フィルターを使用すると、メインの検索クエリにクエリを追加して検索結果をフィルターし、検索結果ウィジェットに返される内容を制御できます。 フィルターウィジェットを表示または非表示にして、変更可能か不変かを決定できます。

カスタムフィルターをページの検索に組み込むことで満足できる多くの使用例があります。
とりあえず、以下の基本的な使用法を検討してください。
| ユースケース | 設定 (値) |
|---|---|
| ユーザータイトルフィルター: エンドユーザーは、フィルターキーを直接操作して、タイトルを使用して結果を探していたものに絞り込みます | フィルターフィールド (title_en_US) フィルター値 (ポッドキャスト) フィルタークエリタイプ (一致) 発生タイプ (must_not) |
| ハードコード化されたフィルタリング:管理ユーザーは、エンドユーザーには表示されず変更できないフィルターを使用してページの検索を構成します。 | 上記の構成に追加 非表示 (True–チェック) 変更不可 (True–チェック) |
カスタムフィルターは非常に多くのことを実行でき、それらすべてをリストすることは不可能です。 以下は、ウィジェットの設定ツアーです。 いくつかの設定例については、 カスタム フィルターの例を参照してください。
カスタムフィルターの追加
カスタムフィルターウィジェットのすべてのオプションを調べるには、ページに1つ必要です。
-
ページの [追加] メニュー (
) を開き、[ウィジェット] セクションを展開します。 -
[検索]セクションから、カスタムフィルターをページにドラッグします。

カスタムフィルター構成
検索結果のフィルタリングを開始するには、ウィジェットのオプション メニュー (
) を開き、 構成をクリックします。
Liferay DXP 2025.Q1/Portal GA132 より前では、設定オプションはウィジェットの右上隅に表示されていました。
フィルターフィールド(テキスト): ほとんどの場合、フィルターは特定のフィールドに作用します。 フィルタリングするインデックス付きフィールドの名前を設定します(たとえば、 title)。 フィルタークエリタイプが Regexpなどのフィールドを必要としないタイプに設定されている場合、これは必要ありません。
検索文字列とスクリプトクエリでは、フィルターフィールドを設定する必要はありません。 他のすべてのクエリには、少なくとも1つのフィールドが必要です。
Liferay DXPインデックスに存在するフィールドを見つけるには、 コントロールパネルのフィールドマッピングUIを使用します。
フィルター値(テキスト): ほとんどのフィルターでは、ここにテキスト値を入力して、指定したフィールドでフィルターを適用するテキストを指定する必要があります(たとえば、 マッチ クエリをテキスト ストリート に設定します title_en_US フィールド)。 一部のフィルター クエリ タイプでは、 Regexp クエリの場合のように、特別な表記が必要です。
フィルタクエリタイプ(リストを選択): 結果をフィルターするクエリタイプを選択します。 使用可能なタイプには、ブール、日付の範囲、存在、ファジー、一致、一致フレーズ、一致フレーズプレフィックス、マルチ一致、プレフィックス、検索文字列、正規表現、スクリプト、単純検索文字列、用語、ワイルドカードが含まれます。
これらのクエリの詳細については、 Elasticsearch ドキュメントをご覧ください。
発生(リストを選択): 検索に提供されるクエリの発生タイプを設定します。 オプションには、Filter、must、must_not、shouldがあります。
各タイプを理解するには、 Elasticsearch ドキュメントを参照してください。
クエリ名 (テキスト): 提供されたクエリの名前を設定します。 このフィルターが、子句を提供する別のフィルターに対する親クエリとして機能しない限り、これは不要です。その場合、このフィルターのクエリ名を子フィルターの親クエリ名として設定します。 この親/子動作は、Boolタイプのフィルターでのみ使用できます。
親クエリ名 (テキスト): ブールクエリに子句を追加する場合は、親カスタム フィルター ウィジェットで構成されたクエリ名と一致するように設定します。 それ以外の場合は、空白のままにします。
ブースト(数値): ブースト このクエリに一致する結果のスコア。 ここでは、意味のある整数または10進数を指定します。
常にこれと一致する結果が常に必要な場合は、ブースト値を非常に高く設定します(例: 1000)。
カスタム見出し(テキスト): このフィルターに表示する見出しを入力します。 設定されていない場合は、フィルター フィールドの 値が表示されます。
カスタムパラメータ名(テキスト):フィルタのURLパラメータ名を指定します。 設定されていない場合、フィルターフィールドの値が使用されます。
非表示 (ブール値): チェックすると、ウィジェットは通常のユーザーには表示されません。 構成のフィルタ値はデフォルトで適用されますが、ユーザーは引き続きURLパラメーターを介して他の値をフィルターできます。 不変設定(以下を参照)を使用すると、URLパラメータのフィルタリングを防ぐことができます。
不変 (ブール値): これを有効にして、通常のユーザーがフィルタ値を変更できないようにします。 ウィジェットは非表示になり、またURLパラメーターを介して設定されたフィルタ値は受け入れられません。 ウィジェット構成で設定されたフィルタ値は、(無効にされていない限り)常に適用されます。 なお、不変をtrueに設定すると、カスタムパラメータ名の値は無視されます。
無効 (ブール値): チェックすると、クエリは無視され、検索に参加しません。 これにより、フィルターを簡単に停止できますが、構成を保持して後で再度有効にすることができます。
統合検索キー(テキスト): このウィジェットが参加している代替検索のキーを入力します。 設定されている場合、デフォルトのインデックスはまったく検索されないことに注意してください。 設定されていない場合、このウィジェットはデフォルトの検索に参加します。
このフィールドの値は、通常、アプリケーション定義のインデックスの名前と一致します。
フィールドを見つける
カスタム フィルター ウィジェットでフィルターできるフィールドを見つけるには、適切な権限を持つユーザーは、 コントロール パネル → 構成 → 検索に移動できます。 そこから、[フィールドマッピング]タブを開き、 liferay-[companyId] インデックスのマッピングを参照します。 マッピングの プロパティ セクションまでスクロールします。

ネストされたフィールドの検索と使用
7.2 FP10+、7.3 FP1+、7.4+ が利用可能
オブジェクト定義と Web コンテンツ構造 フィールドは、Elasticsearch でネストされたフィールドとしてインデックス付けされます。 ネストされたフィールドでフィルタリングするには、3 つのカスタム フィルタ ウィジェットをページに追加する必要があります。 最初のウィジェットは、 Elasticsearch ネストされた クエリを追加するためのもので、他の 2 つは、ネストされたフィールドの名前と値に一致する子クエリを定義するためのものです。 最終的なポータル クエリが生成されると、 ネストされた クエリが子クエリをラップします。
同じページ内の複数のネストされたフィールドにカスタム フィルターが必要な場合は、子クエリごとに個別のパラメーター名を構成する必要があります。 例については、 カスタム フィルターの例 を参照してください。
インデックス内の既存のドキュメント内のネストされたフィールドを検索するには、検索結果ウィジェットの [結果をドキュメント形式で表示] 設定を使用します。
たとえば、オブジェクト エントリには、ネストされたフィールドを持つ nestedFieldArray があります。
"nestedFieldArray" : [
{
"fieldName" : "lastAcessed",
"valueFieldName" : "value_date",
"value_date" : "20230502000000"
}
],
一方、Web コンテンツの記事には、ネストされたフィールドを持つ ddmFieldArray があります。
"ddmFieldArray" : [
{
"ddmFieldName" : "ddm__keyword__44012__Checkbox08350381_en_US",
"ddmFieldValueKeyword_en_US" : "true",
"ddmFieldValueKeyword_en_US_String_sortable" : "true",
"ddmValueFieldName" : "ddmFieldValueKeyword_en_US"
}
],
バージョンによっては、Elasticsearch ではデフォルトで DDM フィールドのネストされたフィールド ストレージ が有効になっている場合があります。
| Liferayのバージョン | ネストされたフィールドはデフォルトで有効になっています |
|---|---|
| 7.4 すべてのアップデート | ✔ |
| 7.3 すべてのアップデート | ✔ |
| DXP 7.2 SP3/FP8+ | ✘ |
動作を変更するには、システム設定 → ダイナミック データ マッピング インデクサーの レガシー ダイナミック データ マッピング インデックス フィールドを有効にする 設定を使用します。
カスタム フィルター ウィジェットで Web コンテンツ構造フィールドを使用する例については、 ネストされたフィールドへの一致の強化 を参照してください。