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

カスタムフィルターウィジェットを使用する際には、インデックス内のフィールドを詳しく調べることが重要です。 詳細については、 インデックス付きフィールドの探索 を参照してください。
カスタムフィルターをページの検索に組み込むことで満足できる多くの使用例があります。
とりあえず、以下の基本的な使用法を検討してください。
| ユースケース | 設定 (値) |
|---|---|
| ユーザータイトルフィルター: エンドユーザーは、フィルターキーを直接操作して、タイトルを使用して結果を探していたものに絞り込みます | フィルタフィールド (title_en_US) フィルタ値 (podcast) フィルタクエリタイプ (一致) 発生タイプ (必須ではない) |
| ハードコード化されたフィルタリング:管理ユーザーは、エンドユーザーには表示されず変更できないフィルターを使用してページの検索を構成します。 | 上記の設定に追加 非表示 (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タイプのフィルターでのみ使用できます。
親クエリ名 (テキスト): 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+ | ✘ |
動作を変更するには、システム設定 → 動的データマッピングインデクサーで レガシー動的データマッピングインデックスフィールドを有効にする 設定を使用します。
カスタムフィルタウィジェットでウェブコンテンツ構造フィールドを使用する例については、 ネストされたフィールドへの一致の強化 を参照してください。