---
title: "階層的なファセット戦略を実装する"
slug: "implement-a-hierarchical-facet-strategy"
abstract: "階層的な側面戦略の実施方法。"
---
# 階層的なファセット戦略を実装する

階層的なfacetsは、検索時にフィルターを組み合わせることで、[facet値の増加という問題](urn:resource:component:1606053/N1747219805173)を解決できます。システムのパフォーマンスと効率を向上させるために、階層的なファセット戦略を実施し、顧客がコンテンツコレクションをナビゲートできるようにしましょう。

階層的facetsを実装するには:

1.  あなたのfacetsリストの中で、組み合わせることで他のカテゴリに分類できる項目を生み出すfacetsを特定してください。例えば *、ブランド* や *モデル*などです。
    
2.  ステップ1で特定されたfacetsの名前を連結して新しいファセットを作成します。例えば、*brand\_model*は *ブランド* と *モデル* の連結文字列で、*\_* を区切り符として使います。
    
3.  新しいファセットをエンティティの属性として追加し、その属性をファセットとして設定します。
    
4.  ソースのエクストラクタロジックを更新して、ファセット値の連結文字列を設定します。例えば、*ブランド* と *モデル*が1 \_で区切られている場合などです。
    
    例えば、*Ford\_Focus*や*Ford\_Kuga*です。
    
5.  更新されたソースを公開し、[再インデックスをトリガー](https://doc.sitecore.com/search/en/users/search-user-guide/en/manually-trigger-a-recrawl-or-reindex.html)します。
    
6.  アプリケーションやページが読み込まれた後、以下の手順を踏みます:
    
    -   ウィジェットのfacetsと値をすべて含むデータをRequestしてください。この例では、ウィジェットrfkid\_7です。
        
        このリクエストはセッションごとに少なくとも1回は実行することを忘れないでください。
        
    -   応答時に、返された面オブジェクトをローカルに保存します。
        
    -   facetsおよびfacet値のリストにあるデータを用いて、必要なユーザーインターフェースを構築します。
        
7.  以下のコードブロックを参照として、ウィジェットrfkid\_7のデータリクエストを更新してください。
    
    {
     "context": {
     "locale": {
     "country": "us",
     "language": "en"
     }
     },
     "widget": {
     "items": 
     {
     "rfk\_id": "rfkid\_7",
     "entity": "car",
     "sources": 
     "981588"
     ,
     "search": {
     "limit":100,
     "content": {
     "fields": 
     "brand\_model",
     "year",
     "city"
     
     },
     "facet": {
     "max": 100,
     "types": 
    
     {
     "name": "brand\_model",
     "filtering\_options": "hard\_filters", "other\_facet\_values"
     },
     {
     "name": "year",
     "filtering\_options": "hard\_filters", "other\_facet\_values"
     },
     {
     "name": "city",
     "filtering\_options": "hard\_filters", "other\_facet\_values"
     }
     
     }
     }
     }
     
     }
     }
    
8.  そのリクエストからウィジェットのレスポンスを使い、contentの項目を解析して個々のfacets数を決定します。例えば、brand\_modelフィールドを用いて、以下のfacetsでbrandとmodelを数えます。
    
    …
     "facet": 
     {
     "name": "brand\_model",
     "value": 
     {
     "id": "facetid\_eyJ0eXBlIjoiZXEiLCJuYW1lI…",
     "text": "Ford\_Focus",
     "count": 6
     },
     {
     "id": "facetid\_eyJ0eXBlIjoiHZAiLCoidHlwZ…",
     "text": "Ford\_Kuga",
     "count": 2
     }
     
     …
    
    この例では、インデックスにはフォード車が8台あり、フォーカスが6台、クガが2台で構成されています。
    
9.  ステップ6で作成したfacetsのリストを埋めます。例えば:
    
    Ford (8)
     Focus (6)
     Kuga (2)