結果タイププロジェクションの有効化と無効化
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Content Search LINQ APIは、Solr Query APIのflパラメーターを使用して、Solrが検索結果で返すフィールドの一覧を指定します。
この機能( result type projectionと呼ばれます)はデフォルトで有効になっていますが、無効にすることもできます。
このパラメータを使用すると、クエリのパフォーマンスはいくつかの点で向上します。
-
Solrが検索結果を提供するために使用するリソースが削減されます。
-
Sitecoreが検索結果の処理に使用するリソースが削減されます。
-
クエリの実行にかかる時間が改善されました。
たとえば、次のコードがあるとします。
次に、次のLINQクエリを実行します。
その後、検索ログで、次のSolrクエリに変換されることがわかります。
取得するフィールドのリストは、結果タイプで使用可能なプロパティに基づいて解決されました。これがresult type projectionです。 _uniqueidフィールドと _datasourceフィールドは、システムの使用に必須であるため、常にリストに表示されます。
次の例は、匿名型でSelect(…) メソッドを使用するクエリです。
Solrからは3つのフィールドのみを取得します。
実際には、検索と結果の取得に別々のタイプを使用できます。これは、検索に使用できる豊富なプロパティ セットを持つと同時に、無駄のない検索結果を取得できるため便利です。次の例では、クエリは検索にデフォルトのSearchResultItemタイプを使用し、結果の取得にSimpleResultItemを使用します。
これは、次のように変換されます。
SearchResultItem型には20を超えるプロパティがありますが、プロバイダーはSimpleResultItem型のオブジェクトを設定するのに十分な4つのフィールドのみを要求します。
結果タイププロジェクションの無効化
結果タイプの投影はデフォルトで有効になっています。ただし、以前のSitecoreバージョンとの下位互換性を維持するために、無効にすることができます。結果タイプが次のいずれかの条件を満たす場合、タイプ投影は無効になります。
-
型にはインデクサーがあります
-
型には、CollapsedIndexFieldAttribute属性でマークされたプロパティがあります
-
タイプのフィールド数が、Sitecore設定の "ContentSearch.Solr.MaxNumberOfFieldsToProject" 設定で定義された制限に達している
クエリ レベルでプロジェクションを強制的に有効または無効にするには、適切なパラメーターを使用してResultTypeProjectionExecutionContext実行コンテキストをGetQueryableメソッドに渡します。
Solrクエリーには、次のflパラメーターが含まれていません。