GraphQLクエリを送信する際にテキストフィールドに対してEquals (EQ)演算子がContainsのように動作する


説明

Equals (EQ)演算子を使用してテキスト フィールドを持つアイテムをリクエストした際に、テキスト フィールドに対してEquals演算子がContains演算子のように動作します。
この問題はEdge (Preview)スキーマと、Solrインデックス内の全てのテキスト フィールドがデフォルトでトークン化されているという点に関連して発生します。

解決策

この問題を解決するには、以下の手順の実施を検討してください。

  1. 以下から入手可能なExperience Edge Connectorモジュールの累積Hotfixをダウンロードしてインストールします。
    • Sitecore XP 10.1およびSitecore Headless Rendering 18用: KB1003490
    • Sitecore XP 10.3およびSitecore Headless Rendering 21用KB1003493
    • Sitecore XP 10.4およびSitecore Headless Rendering 22用KB1003492
    修正プログラムのコアな要素(アセンブリ及びコアな構成)はモジュールのパッケージに含まれています。これらの更新により、あらゆる検索フィールドをlowercaseStringなどの標準トークナイザーStandard Tokenizer)を使用しないカスタムの計算フィールドにマッピングすることが可能となります。ただし、セットアップを完了するには手順2の追加の構成[1]が必要です。

  2. 以下のセットアップを実施します。
    • /App_Config/Sitecore/Services.GraphQLフォルダーで、Sitecore.Services.GraphQL.EdgeContent.SearchFieldMapping.config.exampleという名前のサンプルの構成ファイルを探します。
    • このファイルをSitecore.Services.GraphQL.EdgeContent.SearchFieldMapping.configにリネームします。
    • このファイル内で_customnameフィールドを探します。このフィールドは_nameと同じですが、トークン化されていません。これは記者の構成の見本となります。新しいフィールドを追加するには、以下と同じパターンに従ってください。
      • 新しい計算フィールドを作成し、この構成ファイルのsetFieldMappingノードに追加します。
    • 全ての変更を行った後で、インデックスを再構築します。
    検索クエリでは引き続き_nameを使用することができますが、これは内部的に_customnameにマッピングされることにご留意下さい。

: [1] ここで触れられている追加のセットアップは、XM Cloudにデプロイされたプロジェクトに対しても実行することをお薦めいたします。