SITECORE MANIA 開発者向け技術ブログ

その他

塩川

塩川

Sitecore SearchのAnalyticsの利用について

本記事ではSitecore SearchのAnalytics(データ分析機能)について紹介します。

Sitecore Searchとは

Sitecore Searchとは、予測可能でパーソナライズされた検索エクスペリエンスを作成するために設計された、 AI主導のヘッドレスコンテンツおよび製品発見プラットフォームです。

概要から基本的な設定方法については、弊社の社員により執筆されたこちらの記事で紹介されています。

Analytics(データ分析機能)について

Sitecore Searchに紐づけられたWebページやページ内のアイテムについて、View(閲覧された数),Click(クリックされた数)等を集計可能です。 代表的なデータの例を以下に示します。

  • Request:ユーザーがAPIに対して検索のリクエストを行った回数。
  • Views:検索結果やコンテンツがユーザーに表示された回数。
  • Click:表示された検索結果やコンテンツをユーザーがクリックした回数。
  • (画像はテスト用データです。通常は Request ≧ Views ≧ Click の大小関係になります。)

    また集計する対象の範囲を選択することが可能です。代表的なデータ集計単位の例を以下に示します。

  • 1.キーワード単位の集計
  • 2.インデックス単位の集計
  • 3.Widget単位の集計
  • 1.キーワード単位の集計

    ユーザーが検索ボックスに入力した語句に関するデータを集計します。 「よく検索されているキーワード」「あるキーワードによる検索結果をクリックした回数」等を分析可能です。

    2.インデックス単位の集計

    インデックスは検索対象コンテンツの最小単位です。商品、カテゴリページ、記事などがインデックスされます。 これらのデータを集計することで「商品ごとのクリック数」「よくアクセスされている記事」等を分析可能です。

    3.Widget単位の集計

    Widgetとはサイト内の特定の機能(検索結果・レコメンド・ファセット・ランキング表示など)を表すコンポーネントです。 Sitecore Searchでは機能ごとに定義されたWidgetがデフォルトで用意されており、イベント集計や分析の単位としても使われます。 またWidgetにより、上記のキーワード単位の集計やインデックス単位の集計を拡張させることが可能です。

    例として、キーワードの検索結果に関するアクションをすべて「WIDGET ID = rfkid_7」のWidgetと結びつけることで、 全キーワードの検索結果の合計Click数を、rfkid_7のWidgetのClick数として集計可能になります。

    またインデックスの集計についても
    「商品検索関連のインデックス」はrfkid_6のWidgetを、「FAQ関連のインデックス」はrfkid_5のWidgetを設定することで、 インデックスの種別ごとにClickやView等のイベントを集計可能になります。

    Analyticsにイベントを送信するコード例

    AnalyticsにClickイベントを送信するコード例を以下に示します。 今回の例ではReact Sitecore Search JS SDKパッケージを使用しました。

     
            import "./App.css"
            import { WidgetsProvider, type Environment, trackRecommendationClickEvent} from "@sitecore-search/react";
    
            const App = () => {
                const env = "apse2" as Environment
                //Developer ResourcesページよりKeyを取得可能
                const customerKey = "実際のCustomer Key"
                const apiKey = "実際のAPI Key"
    
                const SEARCH_CONFIG = {
                    env: env,
                    customerKey: customerKey,
                    apiKey: apiKey,
                    useToken: true,
                }
    
                // レコメンデーションクリックイベントのハンドラー
                const sendRecommendationClick = (
                    itemId: string,
                    rfkid: string,
                    keyphrase: string,
                    index: number
                ) => {
                    const widgetPayload = { item_id: itemId, keyphrase, index };
                    const trackViewEventPayload = {
                        rfkid,
                        entity: "content",
                        payload: widgetPayload,
                    };
    
                    trackRecommendationClickEvent(
                        trackViewEventPayload.rfkid,
                        trackViewEventPayload.entity,
                        trackViewEventPayload.payload
                    )
                };
                    
                // ハンドラーその1(アコーディオンA)
                const handleRecommendationClickA = () => {
                    sendRecommendationClick("itemA", "rfkid_7", "accordion A", 0);
                };
    
                // ハンドラーその2(アコーディオンB)
                const handleRecommendationClickB = () => {
                    sendRecommendationClick("itemB", "rfkid_6", "accordion B", 1);
                };
    
                return (
                    <WidgetsProvider
                    {...SEARCH_CONFIG}
                    >
                        <div>
                            <h1>Sitecore Search Demo</h1>
                            <button onClick={handleRecommendationClickA}>
                                レコメンデーションクリックイベントを送信(rfkid=7)
                            </button>
                            <button onClick={handleRecommendationClickB}>
                                レコメンデーションクリックイベントを送信(rfkid=6)
                            </button>
                        </div>    
                    </WidgetsProvider>
                )
            }
    
            export default App          
        
    上記のコードによってwidgetPayloadで指定したitemIdのインデックスや、keyphraseのキーワードに加えて「rfkid=6 or 7」のWidgetにもクリックイベントを送信する事ができます。

    その他の留意事項(2025/09/29現在)

    Analyticsへの反映にかかる時間

    ClickやView等のイベントをSitecore Searchに送信してからAnalyticsに反映されるまで、最長で約24時間かかります。 テスト段階ではスケジュール調整等に注意が必要です。

    Analyticsデータのエクスポートについて

    集計されたデータについてはCSV形式でエクスポート可能です。 しかし、データを自動的にエクスポートするAPIは現在存在しません。


    以上がSitecore SearchのAnalyticsに関する説明となります。ご参考にしていただけると幸いです。
    最後まで読んでいただきありがとうございました。

    参考文献



    ※エントリーの内容・画像等は、公開時点での情報に基づきます。
    ※Sitecoreのバージョンによって実装されている機能が異なります。

    この記事を読んだ人はこちらの記事も読んでます

    Sitecore導入に関するご相談・資料ダウンロード

    導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

    Sitecoreの運用問題を解決する

    既にSitecoreを導入しているお客様向けサービス