Solrを使って検索結果をグループ化する方法

Version:
日本語翻訳に関する免責事項

このページの翻訳は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を使用するには以下の手順に従ってください:

  1. 以下のDLLファイルをプロジェクトに参照してください(Sitecoreウェブサイトの bin フォルダから入手可能です):
    • SolrNet.dll
    • Sitecore.ContentSearch.dll
    • Sitecore.ContentSearch.SolrProvider.dll
    • Sitecore.ContentSearch.SolrNetExtension.dll
  2. 以下の名前空間をインポートします:
    • Sitecore.ContentSearch.SolrNetExtension (SuggesterComponentの実装を含むSolrNetの拡張)

結果グルーピングAPIをISearchIndexの一部として利用できるようになりました:

  1. クエリは文字列や ISolrQueryの実装として作成してください。
  2. メソッド IProviderSearchContext.Query() 呼び出し、返された結果の型を検査します SolrQueryResults.

返された結果にはGrouping性質が含まれており、Dictionary<string, GroupedResults>であり、Keyはグループフィールド名、ValueはGroupedResultsのオブジェクトであり、グループ化された文書のリストとともにグループ化される一意の一致文書の数を表します(ICollection<Group>)。

各Group オブジェクトにはSolr文書、グループの値、グループ内の文書数が含まれています。

例えば:

4A471C394BA548F08D325C3DFB75038F.png

APIドキュメント

クエリ

ソルに対してクエリを実行します。

構文論

public static SolrQueryResults Query( this IProviderSearchContext context, string q, QueryOptions options )

パラメータ

  • 背景

    タイプ: 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" %>

この記事を改善するための提案がある場合は、 お知らせください!