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

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

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