Documentation

検索結果のフィルタリング

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

カスタムフィルターを適用して、特定の検索結果を除外します。

カスタムフィルターを検索ページに組み込むことで満足できる多くの使用例があります。

とりあえず、以下の基本的な使用法を検討してください。

使用事例

構成

ユーザータイトルフィルター: エンドユーザーは、フィルターキーを直接操作して、タイトルを使用して結果を探していたものに絞り込みます

Filter Field (*title* en\ US)
Filter Value (podcast)
Filter Query Type (Match)
Occur Type (must not)_

ハードコード化されたフィルタリング: 管理ユーザーは、エンドユーザーには表示されず変更できないフィルターを使用して検索ページを構成します。

上記の構成に追加*
``True-チェック済み
不変**(*True-チェックあり

カスタムフィルターは非常に多くのことを実行でき、それらすべてをリストすることは不可能です。 以下はウィジェット設定ツアーです。 設定例は カスタムフィルターの例 で見ることができます。

カスタムフィルターの追加

カスタムフィルターウィジェットのすべてのオプションを調べるには、ページに1つ必要です。

  1. ページの[追加]メニュー(Add)を開き、[ウィジェット]セクションを展開します。

  2. [検索]セクションから、カスタムフィルターをページにドラッグします。

カスタムフィルターは、構成するまで影響がありません。

カスタムフィルター構成

検索結果のフィルタリングを開始するには、ウィジェットのオプションメニュー(Options)を開き、[構成]をクリックします。

フィルターフィールド(テキスト): ほとんどの場合、フィルターは特定のフィールドに作用します。 フィルタリングするインデックス付きフィールドの名前を設定します(たとえば、 title)。 [フィルタークエリタイプ]が、フィールドを必要としないタイプ(Regexp など)に設定されている場合、これは必要ありません。

クエリ文字列とスクリプトクエリでは、フィルターフィールドを設定する必要はありません。 他のすべてのクエリには、少なくとも1つのフィールドが必要です。

Liferay DXPインデックスに存在するフィールドを見つけるには、コントロールパネルのフィールドマッピングUIで 使用します

フィルター値(テキスト): ほとんどのフィルターでは、指定したフィールドにフィルターを適用するテキストを指定するテキスト値をここに入力する必要があります(たとえば、 マッチ クエリをテキスト ストリート に設定します title_en_US フィールド)。 一部のフィルタークエリタイプでは、 Regexp クエリの場合のように、特別な表記が必要です。

クエリタイプのフィルター(選択リスト): 結果をフィルターするクエリタイプを選択します。 使用可能なタイプには、ブール、存在、ファジー、一致、一致フレーズ、一致フレーズプレフィックス、マルチ一致、プレフィックス、クエリ文字列、正規表現、スクリプト、単純クエリ文字列、用語、ワイルドカードが含まれます。

これらのクエリの詳細は、 Elasticsearchのドキュメント ご覧ください。

発生(選択リスト): 検索に提供されるクエリの発生タイプを設定します。 オプションには、Filter、must、must_not、shouldがあります。

各タイプを理解するには、 Elasticsearchのドキュメント 参照してください。

クエリ名(テキスト): 提供されたクエリの名前を設定します。 このフィルターが、子句を提供する別のフィルターに対する親クエリとして機能しない限り、これは不要です。その場合、このフィルターのクエリ名を子フィルターの親クエリ名として設定します。 この親/子動作は、Boolタイプのフィルターでのみ使用できます。

親のクエリ名(テキスト): Boolクエリに子節を寄与する場合、親のカスタム・フィルタ・ウィジェットで設定されたクエリ Nameと一致するように設定します。 それ以外の場合は、空白のままにします。

ブースト(数値): Boost このクエリに一致する結果のスコア。 ここでは、意味のある整数または10進数を指定します。

常にこれと一致する結果が常に必要な場合は、Boost値を非常に高く設定します(例: 1000)。

カスタム見出し(テキスト): このフィルターに表示する見出しを入力します。 設定されていない場合、フィルターフィールドの値が表示されます。

カスタムパラメータ名(テキスト): フィルタのURLパラメータ名を指定します。 設定されていない場合、フィルターフィールドの値が使用されます。

Invisible (boolean): チェックすると、ウィジェットは通常のユーザーには表示されません。 構成のフィルター値はデフォルトで適用されますが、ユーザーは引き続きURLパラメーターを介して他の値をフィルターできます。 不変設定(以下を参照)を使用すると、URLパラメータのフィルタリングを防ぐことができます。

Immutable (boolean): これを有効にして、通常のユーザーがフィルター値を変更できないようにします。 ウィジェットは非表示になり、 _ URLパラメーターを介して設定されたフィルター値は受け入れられません。 ウィジェット構成で設定されたフィルター値は、(無効にされていない限り)常に適用されます。 なお、Immutableをtrueに設定すると、Custom Parameter Nameの値は無視されます。

Disabled (boolean): チェックすると、クエリは無視され、検索に参加しません。 これにより、フィルターを簡単に停止できますが、構成を保持して後で再度有効にすることができます。

統合検索キー(テキスト): このウィジェットが参加している代替検索のキーを入力します。 設定されている場合、デフォルトのインデックスはまったく検索されないことに注意してください。 設定されていない場合、このウィジェットはデフォルトの検索に参加します。

このフィールドの値は、通常、アプリケーション定義のインデックスの名前と一致します。

フィールドを見つける

カスタムフィルタウィジェットでフィルタリングできるフィールドを見つけるには、適切な権限を持つユーザーは、 [コントロールパネル] → [設定] → [検索] にナビゲートすることができます。 そこから、[フィールドマッピング]タブを開き、 liferay-[companyId] インデックスのマッピングを参照します。 マッピングの プロパティ セクションまでスクロールします。

フィールドマッピングを参照して、Liferay DXPのインデックス付きフィールドを見つけます。

ネストされたフィールドの検索と使用

提供時期:7.2 FP10 , 7.3 FP1/SP1

Accessing Nested DDM Fields で説明されているように、Liferay 7.2 SP3 /FP8 (およびLiferay 7.3のすべてのバージョン)では、DDMフィールドは ネストされたフィールド になりました。 7.2および7.3の最新のFix PackおよびGAリリースでは、これらのネストされたフィールドを考慮して、 Elasticsearch Nested query がサポートされています。

既存のドキュメントのDDMフィールドをインデックスで探すには

GET liferay-20097/_search
{
  "query": {
    "nested": {
      "path": "ddmFieldArray",
      "query": {
        "wildcard":  { "ddmFieldArray.ddmFieldName": "ddm__*" }
      }
    }
  }
}

インデックス名パラメータのCompany Id---20097---を、インスタンスの値に合わせて置き換えます。

返されたドキュメントには、ネストされたコンテンツを持つ ddmFieldArray オブジェクトがあります。

 "ddmFieldArray" : [
    {
      "ddmFieldName" : "ddm__keyword__40806__Textb5mx_en_US",
      "ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
      "ddmFieldValueKeyword_en_US_String_sortable" : "some text has been entered",
      "ddmFieldValueKeyword_en_US" : "some text has been entered"
    },
    {
      "ddmFieldName" : "ddm__keyword__40806__Selectjdw0_en_US",
      "ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
      "ddmFieldValueKeyword_en_US_String_sortable" : "option 3",
      "ddmFieldValueKeyword_en_US" : "value 3"
    },
    {
      "ddmFieldName" : "ddm__keyword__40806__Boolean15cg_en_US",
      "ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
      "ddmFieldValueKeyword_en_US" : "true",
      "ddmFieldValueKeyword_en_US_String_sortable" : "true"
    }
  ],

これらのフィールドのいずれかをカスタムフィルター構成で使用すると、3つのカスタムフィルターウィジェットが必要になります。 入れ子になったクエリ は、必要な子クエリをラップするために追加されます。一方の子クエリはフィールドの名前にマッチし、もう一方は値にマッチします。

カスタムフィルタ」ウィジェットでのDDM構造体フィールドの使用例については、 Boosting Matches to Nested Fields を参照してください。