Solrを使用して検索結果をグループ化する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックはSitecore 9.0以降で有効です。
Solrには結果のグループ化機能があります。この機能を使用して、共通のフィールド値に基づいてドキュメントをグループに分類します。Solrは、各グループの上位のドキュメントを返します。
たとえば、ユーザーが「DVD」を検索すると、Solrは「TV and Video」、「Movies」、「Computers」などの3つのカテゴリを、カテゴリごとに3つの結果とともに返すことができます。この場合、クエリ用語 "DVD" は3つのカテゴリすべてに表示されます。Solrは、エンドユーザーにとってより有用なものにするために、結果をグループ化します。
この機能を使用するためにSolrで何も構成する必要はありません。
詳細については、こちらをご覧ください。
https://cwiki.apache.org/confluence/display/solr/Result+Grouping
Sitecoreとの併用
Sitecoreとの併用
Sitecoreには、Solrの結果グループ化機能にアクセスするために使用するAPIがあります。このAPIは、既存のContentSearch APIの拡張機能として設計されています。
プロジェクトでAPIを使用するには、次の手順に従います。
-
次のDLLファイルをプロジェクトで参照します (Sitecore Webサイトのbinフォルダーから取得できます)。
-
SolrNet.dll
-
Sitecore.ContentSearch.dll
-
Sitecore.ContentSearch.SolrProvider.dll
-
Sitecore.ContentSearch.SolrNetExtension.dll
-
-
次の名前空間をインポートします。
-
Sitecore.ContentSearch.SolrNetExtension (SuggesterComponentの実装を含むSolrNetの拡張機能)
-
Result Grouping APIをISearchIndexの一部として使用できるようになりました。
-
クエリを文字列または任意の実装として作成しますISolrQuery。
-
メソッドIProviderSearchContext.Query() 呼び出し、返された結果を型で検査します。 SolrQueryResults<T>.
返される結果には、Dictionary<string, GroupedResults<T>>であるGroupingプロパティが含まれます。ここで、Keyはグループ フィールド名、Valueはグループ化されたドキュメントの一覧 (ICollection<Group<T>>と共にグループ化された一意の一致ドキュメントの数を表すGroupedResultsのオブジェクト です 。
各Group<T> オブジェクトには、Solrドキュメント、グループ値、およびグループ内のドキュメントの数が含まれます。
例えば:
APIドキュメント
APIドキュメント
Query
Solrに対してクエリを実行します。
構文
パラメーター
-
文脈
種類: Sitecore.ContentSearch.IProviderSearchContext
検索プロバイダーのコンテキスト
-
q
Solrクエリ文字列
-
オプション
種類: SolrNet.Commands.Parameters.QueryOptions
クエリオプション
型パラメータ
-
T
結果アイテムのタイプ
備考
このメソッドは、定義されたオプションのセット (2番目のパラメーター) を使用してSolrに対してクエリ (最初の引数) を実行し、結果を値のディクショナリとして取得します。
