Solrを使って検索結果をグループ化する方法
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
!注このトピックはSitecore 9.0以降にも適用されます。
Solrには結果グループ化機能があります。この機能を使って、共通のフィールド値に基づいて文書をグループに並べ替えます。Solrは各グループの上位文書を返します。
例えば、「DVD」で検索すると、「TV and Video」「Movies」「Computers」の3つのカテゴリを返し、各カテゴリごとに3つの結果が表示されます。この場合、「DVD」というクエリ語が3つのカテゴリすべてに表示されます。Solrはエンドユーザーにとってより有用な結果をまとめて作成します。
この機能を使うためにSolrで何も設定する必要はありません。
詳細はこちらをご覧ください:
https://cwiki.apache.org/confluence/display/solr/Result+Grouping
Sitecoreでの利用
SitecoreにはSolrの結果グループ化機能にアクセスするためのAPIがあります。このAPIは既存のContentSearch APIの拡張として設計されています。
プロジェクトでAPIを使用するには以下の手順に従ってください:
- 以下のDLLファイルをプロジェクトに参照してください(Sitecoreウェブサイトの bin フォルダから入手可能です):
- SolrNet.dll
- Sitecore.ContentSearch.dll
- Sitecore.ContentSearch.SolrProvider.dll
- Sitecore.ContentSearch.SolrNetExtension.dll
- 以下の名前空間をインポートします:
- Sitecore.ContentSearch.SolrNetExtension (SuggesterComponentの実装を含むSolrNetの拡張)
結果グルーピングAPIをISearchIndexの一部として利用できるようになりました:
- クエリは文字列や ISolrQueryの実装として作成してください。
- メソッド IProviderSearchContext.Query() 呼び出し、返された結果の型を検査します SolrQueryResults
.
返された結果にはGrouping性質が含まれており、Dictionary<string, GroupedResults
各Group
例えば:

APIドキュメント
クエリ
ソルに対してクエリを実行します。
構文論
public static SolrQueryResults
パラメータ
-
背景
タイプ: Sitecore.ContentSearch.IProviderSearchContext
検索プロバイダーの文脈
-
q
Solrクエリ文字列
-
オプション
タイプ: SolrNet.Commands.Parameters.QueryOptions
クエリオプション
型パラメータ
-
T
結果項目の種類
発言
このメソッドは、定義されたオプション集合(2つ目のパラメータ)でSolrに対してクエリ(最初の引数)を実行し、結果を値の辞書として取得します。
例
The following example illustrates the basic usage of result grouping. <%@ Page Language="C#" AutoEventWireup="true" %> <%@ Import namespace="Sitecore.ContentSearch.SolrProvider.SolrNetIntegration" %> <%@ Import namespace="Sitecore.ContentSearch" %> <%@ Import namespace="Sitecore.Configuration" %> <%@ Import namespace="Sitecore.Data" %> <%@ Import namespace="Sitecore.Data.Items" %> <%@ Import namespace="SolrNet.Commands.Parameters" %> <%@ Import namespace="Sitecore.ContentSearch.SearchTypes" %> <%@ Import Namespace="Sitecore.SecurityModel" %>