---
title: "検索ポリシーを定義する"
slug: "define-search-policies"
abstract: ""
---
# 検索ポリシーを定義する

インデックスを設定する際には、Plugin.Search.PolicySet.1.0.0.jsonファイル(または各環境JSONファイル)に以下のポリシーを追加する必要があります。

-   [Search Scopeポリシー](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/define-search-policies.html#UUID-e5381028-8072-28e6-d57b-684c83c043e9_N1554499432678 "Search Scope policy")
-   [インデックス可能なポリシー](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/define-search-policies.html#UUID-e5381028-8072-28e6-d57b-684c83c043e9_N1554499475895 "Indexable policy")
-   [Search Viewポリシー](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/define-search-policies.html#UUID-e5381028-8072-28e6-d57b-684c83c043e9_N1554499487347 "Search View policy")

## Search Scopeポリシー

Search Scopeポリシーは、検索スコープ名(インデックス名と一致)、インデックスに追加されるエンティティの種類、検索結果からデータの追加・削除を行うタグセット、そしてエンティティのために監視すべきリストを定義します。

{
 "$type": "Sitecore.Commerce.Plugin.Search.SearchScopePolicy, Sitecore.Commerce.Plugin.Search",
 "Name": "YOUR SEARCH SCOPE NAME",
 "IncrementalListName": "YOUR INCREMENTAL LIST NAME",
 "FullListName": "YOUR FULL LIST NAME",
 "DeletedListName": "YOUR DELETED LIST NAME",
 "EntityTypeNames": "YOUR ENTITY NAME",

 "ResultDetailsTags": {
 "$type": "System.Collections.Generic.List\`1Sitecore.Commerce.Core.Tag, Sitecore.Commerce.Core, mscorlib",
 "$values": 
 {
 "$type": "Sitecore.Commerce.Core.Tag, Sitecore.Commerce.Core",
 "Name": "YOUR TAG"
 },
 {
 "$type": "Sitecore.Commerce.Core.Tag, Sitecore.Commerce.Core",
 "Name": "ANOTHER TAG"
 }
 
 }
 }

## インデックス可能なポリシー

インデックス可能なポリシーは、インデックスの設定、インデックスのフィールド、そのタイプ、検索可能か、フィルタブルかなどを定義します。キーとして設定できるフィールドは1つだけです(そうしないとインデックス作成や更新時にエラーが出ます)。 SearchScopeNameはSearchScopePolicyの名前と一致しなければなりません。

{
 "$type": "Sitecore.Commerce.Plugin.Search.IndexablePolicy, Sitecore.Commerce.Plugin.Search",
 "SearchScopeName": "YOUR SEARCH SCOPE NAME",
 "Properties": {
 "PROPERTY1": {
 "TypeName": "System.String",
 "IsKey": true, ONLY ONE PROPERTY CAN BE KEY
 "IsSearchable": true,
 "IsFilterable": false,
 "IsSortable": false,
 "IsFacetable": false,
 "IsRetrievable": true
 },
 "PROPERTY2": {
 "TypeName": "System.String",
 "IsKey": false,
 "IsSearchable": true,
 "IsFilterable": true,
 "IsSortable": true,
 "IsFacetable": false,
 "IsRetrievable": true
 },
 "PROPERTY3": {
 "TypeName": "System.DateTimeOffset",
 "IsKey": false,
 "IsSearchable": false,
 "IsFilterable": true,
 "IsSortable": true,
 "IsFacetable": false,
 "IsRetrievable": true
 },
 "ArtifactStoreId": {
 "TypeName": "System.String",
 "IsKey": false,
 "IsSearchable": false,
 "IsFilterable": true,
 "IsSortable": false,
 "IsFacetable": false,
 "IsRetrievable": false
 }
 }
}

> !注ArtifactStoreIdは複数の環境がインデックスを共有する場合に必須フィールドとして使われます。ArtifactStoreIdフィールドは、環境が追加・削除・取得できるデータを決定します。

## Search Viewポリシー

SearchViewポリシーは、検索および検索結果のエンティティビューの設定を定義しています。

ビューがリクエストされると、IGetEntityViewPipelineのブロックがリクエストされたビューのSearchViewPolicyをチェックします。Search Viewポリシーにリクエストされたビューへの参照が含まれている場合、パイプラインはそのリクエストされたビューの子ビューとして検索ビューを追加します。

{
 "$type": "Sitecore.Commerce.Plugin.Search.SearchViewPolicy, Sitecore.Commerce.Plugin.Search",
 "SearchScopeName": "YOUR SCOPE NAME",
 "ViewName": "YOUR VIEW NAME",
 "PageSize": 10,
 "PageSizeOptions":
 {
 "$type": "System.Collections.Generic.List\`1System.Int, mscorlib",
 "$values": 
 {
 "$type": "System.Int",
 "Name": 5
 },
 {
 "$type": "System.Int",
 "Name": 10
 },
 {
 "$type": "System.Int",
 "Name": 25
 },
 {
 "$type": "System.Int",
 "Name": 50
 },
 {
 "$type": "System.Int",
 "Name": 100
 }
 
}