---
title: "ウォークスルー:APIを使った検索体験の作成とイベント送信"
slug: "walkthrough--using-apis-to-create-a-search-experience-and-send-events"
abstract: "Searchや推奨API、イベントの送信リクエストのOverview Sitecore Searchで検索体験を作成することがAPI。"
---
# ウォークスルー:APIを使った検索体験の作成とイベント送信

管理者が [属性](https://doc.sitecore.com/search/en/users/search-user-guide/en/attributes.html)、[ソース](https://doc.sitecore.com/search/en/users/search-user-guide/index-items.html)、検索機能を設定した後、Sitecore Searchと統合して訪問者のための検索体験を作成できます。

APIを通じてこれを行うには、[SearchおよびRecommendation API](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences.html "Using the Search and Recommendation API to create search experiences")に呼び出してコンテンツをリクエストし、その応答を使って望む体験を作成してください。同時に、関連するすべてのイベントデータを[Events API](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-events-api-to-track-events.html "Using the Events API to track events")を通じてSearchに送信することも推奨します。

> !重要このウォークスルーには、特定の検索体験を作成するために必要なAPIリクエストが含まれています。実装には他の機能が必要かもしれませんが、このウォークスルーを過去のリクエストの上にリクエストを構築するための指針として活用してください。
> 
> 異なる体験を作るために、[Search and Recommendation API](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences.html "Using the Search and Recommendation API to create search experiences")を研究して必要なオブジェクトを見つけ、そのオブジェクトを使ってこのウォークスルーの例に基づいてリクエストを作成してください。同様に、[Events API](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-events-api-to-track-events.html "Using the Events API to track events")のオブジェクトを研究して、関連するすべてのイベントをSearchに送信してください。

このウォークスルーは、訪問者が検索結果ページにたどり着き、facetsを見るシナリオに基づいています。その後、訪問者は検索バーにキーワードを入力し、preview searchウィジェットで提案が表示されます。訪問者が提案をクリックすると、新しい結果が表示された結果ページが表示され、結果を絞り込むためにファセット値を選択します。その後、結果をコンテンツタイトルの降順に並べ替え、content itemをクリックします。

このウォークスルーでは、以下のためのAPIリクエストの形成方法を説明します:

-   facetsを用いた検索結果ページを作成する
-   recommendationsに出てもらいpreview search
-   キーワードに基づいて検索結果ページを作成する
-   ファセット値でフィルタリングされた検索結果ページを作成する
-   ソートを適用した検索結果ページを作成する
-   訪問者をコンテンツページにリダイレクトします
-   Send events to Search

> !注preview searchウィジェットで提案を表示するためのAPIリクエストを除き、以下のリクエストはすべて前のリクエストに基づいています。

## facetsを用いた検索結果ページを作成する

訪問者が最初に検索ページにたどり着いたとき、検索結果やfacetsを表示したいのです。

facetsを含む検索結果ページを作成するには:

-   コンテキスト、コンテンツ、 [ファセット](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/using-faceted-search.html "Using faceted search") オブジェクトを追加し、検索結果ページのIDを rfk\_idの値として渡します。

以下は、facetsを含む検索結果ページを表示するためのサンプルCURLリクエストです:

curl --location 'https://discover.sitecorecloud.io/discover/v2/159871551' \\
--header 'Authorization: 01-22977f73-b96bm327df2ffc7ip16d4c030a201240ced2487n' \\
--data '{
 "context": {
 "user": {
 "UUID": "159828561-m7-17-44-1p-c0ya4nb69t8o0iho2eia-1667926756187"
 },
 "locale": {
 "country": "us",
 "language": "en"
 }
 },
 "widget": {
 "items": 
 {
 "entity": "content",
 "rfk\_id": "rfkid\_7",
 "search": {
 "content": {},
 "facet": {
 "all": true,
 "max": 100
 }
 }
 }
 
 }
}'

以下はサンプルの回答です:

{
 "widgets": 
 {
 "rfk\_id": "rfkid\_7",
 "type": "content\_grid",
 "entity": "content",
 "facet": 
 {
 "name": "type",
 "label": "Type",
 "value": 
 {
 "id": "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoidHlwZSIsInZhbHVlIjoiTmV3cyJ9",
 "text": "News",
 "count": 688
 },
 {
 "id": "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoidHlwZSIsInZhbHVlIjoiQ3VzdG9tZXJzIn0=",
 "text": "Customers",
 "count": 576
 },
 ...
 
 },
 {
 "name": "review\_rating",
 "label": "Rating",
 "value": 
 {
 "id": "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoidHlwZSIsInZhbHVlIjoiTmV3cyJ9",
 "text": "5",
 "count": 310
 },
 {
 "id": "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoidHlwZSIsInZhbHVlIjoiQ3VzdG9tZXJzIn0=",
 "text": "4",
 "count": 780
 },
 ...
 
 }
 ,
 "content": 
 {
 "description": null,
 "id": "https\_\_\_www\_sitecore\_com\_company\_newsroom\_news\_2023\_03\_sitecore-named-a-leader-for-dxp",
 "review\_rating": "5",
 "image\_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/2023-gartner-magic-quadrant-for-digital-experience-platforms-dt-3.png?md=20230316T153407Z",
 "source\_id": "730959",
 "title": "Sitecore named a Leader for DXP",
 "keywords": "DXP","gartner",
 "type": "News",
 "url": "https://www.sitecore.com/company/newsroom/news/2023/03/sitecore-named-a-leader-for-dxp"
 },
 {
 "description": " active and real-time content integration framework for consistent and continuous data synchronization of product content and assets across Sitecore Content Hub and OrderCloud....",
 "review\_rating": "4",
 "image\_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/images/home/marketplace/appmarketplace.svg?md=20220328T214947Z",
 "source\_id": "730959",
 "title": "Connector & App Marketplace",
 "keywords": "connector","content hub", "data synchronization",
 "type": "Others",
 "url": "https://www.sitecore.com/products/marketplace"
 }
 ...
 ,
 "total\_item": 3443,
 "limit": 10,
 "offset": 1
 }
 ,
 "dt": 45,
 "ts": 1680573661787
}

回答を使って検索体験を作成する方法:

1.  ページ上のcontent itemsリストを表示するには、レスポンスの widgets.content オブジェクトをご覧ください。各content itemについて、 *タイトル*、説明、画像、URLをタイトル、 *説明*、 *image\_url*、 *URL* フィールドから取得してください。
2.  facetsを示すには、応答の widgets.facet オブジェクトを見てから:
    -   facet.labelフィールドからファセットの名前を抽出します。ここに、*Type*と*Rating*の2つのfacetsがあります。
        
    -   facet.valueオブジェクトから各ファセットのファセット値を取得します。textキーの値をファセット値の名前として使い、ページに表示します。countの値はそのファセット値のcontent items数として使います。
        
        例えば、*型*のファセットには*688* content itemsの4のファセット値*News*を使うことができます。同様に、review\_ratingのファセットには*310* content itemsの*5*というファセット値を使うことができます。
        

## recommendationsに出てもらいpreview search

訪問者が検索バーにキーワードを入力したとき、提案を表示したいのです。

preview searchウィジェットにrecommendationsを表示するには:

-   [クエリオブジェクト](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/querying-with-a-keyphrase.html "Querying with a keyphrase")、[提案オブジェクト](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/adding-suggestions.html "Adding suggestions")を追加し、preview searchウィジェットのIDをrfk\_idとして渡します。

この例では、訪問者がキーワード*clou*を入力し、*Keyword*属性に基づく提案を表示したい場合です。

以下は、preview searchウィジェットの *キーワード* 属性に基づいてrecommendationsデータを表示するためのサンプルCURLリクエストです:

curl --location 'https://discover.sitecorecloud.io/discover/v2/159871551' \\
--header 'Authorization: 01-21667f73-b96bn327df2ffc7ab16d4c030a201240ced2490a' \\
--data '{
 "context": {
 "user": {
 "UUID": "159828561-m7-17-44-1p-c0ya4nb69t8o0iho2eia-1667926756187"
 },
 "locale": {
 "country": "us",
 "language": "en"
 }
 },
 "widget": {
 "items": 
 {
 "entity": "content",
 "rfk\_id": "rfkid\_6",
 "search": {
 "content": {},
 "query": {
 "keyphrase": "clou"
 },
 "suggestion": 
 {
 "name": "keyword\_suggester"
 }
 
 }
 }
 
 }
}'

ご覧の通り:

-   suggestionオブジェクトに渡す値は、Searchで設定されたsuggestion blockと管理者のAPI名です。
-   rfk\_idに渡す値は、Searchのデフォルトのpreview searchウィジェットのIDです。

こちらがこのリクエストへのサンプル回答です:

{
 "widgets": 
 {
 "rfk\_id": "rfkid\_7",
 "type": "content\_grid",
 "entity": "content",
 "suggestion": {
 "keyword\_suggester": 
 {
 "text": "cloud faq",
 "freq": 14
 },
 {
 "text": "cloud addendum",
 "freq": 3
 },
 {
 "text": "cloud portal",
 "freq": 3
 }
 ...
 
 },
 "total\_item": 0,
 "limit": 10,
 "offset": 0
 }
 ,
 "dt": 13,
 "ts": 1680632333374
}

この回答を使ってこの検索体験を作成する方法:

1.  提案を示すには、回答の widgets.suggestion.name\_suggestor 配列を参照してください。この配列には、それぞれ text と freqを持つ提案のリストがあります。
2.  preview searchウィジェットで一つの提案を表示するには、 textの値が表示されます。

freqキーの値は、そのリクエストに関連するコンテンツコレクションの部分でフレーズがどれだけ頻繁に出現するかを示します。例えば、*cloud FAQ*はこのクエリに関連する検索結果のプールに14回表示されます。

## キーワードに基づいて検索結果ページを作成する

訪問者が提案をクリックすると、キーワードに基づいて修正された検索結果ページが表示されます。

キーワードに基づいて検索結果ページを作成するには:

-   [検索結果ページを作成しfacetsで](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/walkthrough--using-apis-to-create-a-search-experience-and-send-events.html#UUID-da770fe4-d714-901e-2e93-0109263f2dab_section-idm4513440969443233612798317639 "Create a search results page with facets")[作成した際に送ったリクエストを修正してクエリオブジェクトを追加してください。](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/querying-with-a-keyphrase.html "Querying with a keyphrase")

この例では、訪問者は提案 *クラウドポータル*をクリックします。

以下は、キーワードに基づく検索結果ページを表示するためのサンプルリクエストです:

{
 "context": {
 "locale": {
 "country": "us",
 "language": "en"
 },
 "user": {
 "uuid": "43533744-1y-6i-4j-1p-nn0if7kfzq8kw3am4i17-1664982959269"
 }
 },
 "widget": {
 "items": 
 {
 "entity": "content",
 "rfk\_id": "rfkid\_7",
 "search": {
 "content": {},
 "facet": {
 "all": true,
 "max": 100
 },
 "query": {
 "keyphrase": "cloud portal"
 }
 }
 }
 
 }
}

## ファセット値でフィルタリングされた検索結果ページを作成する

訪問者が結果を絞り込むためにファセット値を選択すると、そのファセット値に基づいてフィルタリングされた結果が表示されます。

「ファセット値でフィルタリングされた検索結果ページを作成する」

-   キーワード [に基づいて検索結果ページを作成する](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/walkthrough--using-apis-to-create-a-search-experience-and-send-events.html#UUID-da770fe4-d714-901e-2e93-0109263f2dab_section-idm4549363559206433613185909414 "Create a search results page based on a keyword") 際に送信したリクエストを修正し、 [フィルターオブジェクト](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/filtering-items-in-search-results.html "Filtering items in search results")を追加してください。

この例では、訪問者は*Type*面で*Blogs*を選択します。

以下は、ファセットバリュー *facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoicHJvZHVjdCIsInZhbHVlIjoiRGlzY292ZXIifQ*でフィルタリングされた検索結果ページを表示するためのサンプルリクエストです:

> !注*facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoicHJvZHVjdCIsInZhbHVlIjoiRGlzY292ZXIifQ*は*Blogs*ファセット値のIDです。この値は、前回のリクエストへの応答、*キーワードに基づく検索結果ページの作成*、またはfacetsを求めるリクエストからも可能です。

{
 "context": {
 "locale": {
 "country": "us",
 "language": "en"
 },
 "user": {
 "uuid": "43533744-1y-6i-4j-1p-nn0if7kfzq8kw3am4i17-1664982959269"
 }
 },
 "widget": {
 "items": 
 {
 "entity": "content",
 "rfk\_id": "rfkid\_7",
 "search": {
 "content": {},
 "suggestion": 
 {
 "name": "title\_context\_aware"
 }
 ,
 "facet": {
 "all": true,
 "max": 100,
 "types": 
 {
 "name": "type",
 "filter": {
 "values": 
 "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoicHJvZHVjdCIsInZhbHVlIjoiRGlzY292ZXIifQ=="
 ,
 "type": "or"
 }
 }
 
 },
 "query": {
 "keyphrase": "cloud portal"
 }
 }
 }
 
 }
}

## ソートを適用した検索結果ページを作成する

訪問者がタイトルの降順で結果を並べ替えると、検索結果は並べ替え順に表示されます。

ソートを適用した検索結果ページを作成するには:

-   前回送信したリクエストを修正して、 *サイド値でフィルタリングされた検索結果ページを作成* して [ソートオブジェクト](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-search-and-recommendation-api-to-create-search-experiences/sorting-content.html "Sorting content")を追加してください。

この例では、訪問者はタイトルの降順でソートします。

以下は、検索結果ページがコンテンツタイトルの下から順に並べられた表示のためのサンプルリクエストです:

{
 "context": {
 "locale": {
 "country": "us",
 "language": "en"
 },
 "user": {
 "uuid": "43533744-1y-6i-4j-1p-nn0if7kfzq8kw3am4i17-1664982959269"
 }
 },
 "widget": {
 "items": 
 {
 "entity": "content",
 "rfk\_id": "rfkid\_7",
 "search": {
 "content": {},
 "facet": {
 "all": true,
 "max": 100,
 "types": 
 {
 "name": "type",
 "filter": {
 "values": 
 "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lIjoicHJvZHVjdCIsInZhbHVlIjoiRGlzY292ZXIifQ=="
 ,
 "type": "or"
 }
 }
 
 },
 "query": {
 "keyphrase": "cloud portal"
 },
 "sort": {
 "choices": true,
 "value": 
 {
 "order": "asc",
 "name": "desc\_name"
 }
 
 }
 }
 }
 
 }
}

sortオブジェクトで、管理者が[ソート](https://doc.sitecore.com/search/en/users/search-user-guide/en/sorting-options.html)設定時に作成したソートオプションのAPI名前を渡します。ここでは「*desc\_name*」というソートオプションを使用します。

## 訪問者をコンテンツページにリダイレクトします

訪問者がコンテンツを整理した後、content itemをクリックします。これに対処するために、訪問者がcontent item内のどこかでクリックした際にcontent itemの*URL*へのリダイレクトを作成します。

## Send events to Search

訪問者がウィジェットをクリックしたり、ログインしたり、記事にアップボートしたりしてあなたのページとやり取りする際、そのやり取りを追跡し、イベントAPIを使ってその情報をSitecore Searchに送信する必要があります。

Sitecore Searchイベントを使ってサイト全体の訪問者データを追跡します。このデータは検索ランキング、分析生成、検索結果やrecommendationsのパーソナライズに使われます。イベントREST APIを使ってイベントを送信できます。

このウォークスルーでは、訪問者が取る各アクションごとに以下の [イベント](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/using-the-events-api-to-track-events.html "Using the Events API to track events") を送信します。

来訪者の行動

送るイベント

検索結果ページに止まり、content items and facets を見る

view\`\`widget

view\`\`entity\_page

検索バーにキーワードを入力し、preview searchウィジェットで提案を見ることができます

view\`\`widget

Click a Suggestion をクリックすると、新しい結果が表示される検索結果ページが表示されます

click\`\`widget  
  
リクエストでは、 suggestion を action\_causeの値として渡します。

view\`\`widget

結果を絞り込むためにファセット値を選択します

view\`\`widget

click\`\`widget  
  
リクエストでは、 filter を action\_causeの値として渡します。

結果をコンテンツタイトルの降順で並べ替えてください

view\`\`widget

Click a content item を選んで、そのコンテンツのページに移動します

clickwidget。  
  
リクエストでは、 entity を action\_causeの値として渡します。

view\`\`entity\_page