階層的なfacetsの作成

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

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

非常に大規模なコンテンツ コレクションをナビゲートするために、サイト訪問者が複数のフィルターを使用する必要がある場合があります。Hierarchical facetsを使用すると、検索でフィルターを組み合わせることができるため、訪問者は大規模で多様なコンテンツ コレクションからでも特定の結果を見つけることができます。

この例では、APIインタラクションでの通常の (フラット) ファセット検索の使用を示し、このフィルタリング方法のみを使用した場合に発生する可能性のある問題について説明します。

facetsの単純なケース

現在16台の車を販売している自動車ディーラーを考えてみましょう。facets car_brandcar_modelcitycar_yearによって編成されています。

The cars available from the dealership organized by four different facets.
  • car_brandは複数のモデルを提供できます。

  • car_modelは1年以上で製造されている可能性があります。

  • 車は複数の都市で販売できます。

この例では、16台の車があり、それぞれがブランド、モデル、都市、および年の組み合わせを表しています。 Searchは、これらの組み合わせを表す21個のファセット オブジェクトを作成します。これらのオブジェクトは、データと4つのfacetsに関連付けられ、そのIDはフィルター要求で使用されます。

次のコードは、この情報を表示するためにウィジェットによって行われた要求を表示します。ウィジェットIDはrfkid_7です。

{
    "context": {
        "locale": {
            "country": "us",
            "language": "en"
        }
    },
    "widget": {
        "items": [
            {
                "rfk_id": "rfkid_7",
                "entity": "car",
                "sources": [
                    "981588"
                ],
                "search": {
                 "limit":100,
                    "content": {
                        "fields": [
                            "car_brand",
                            "car_model",
                            "car_year",
                            "city"
                        ]
                    },
                    "facet": {
                        "max": 100,
                        "types": [
 
                            {
                                "name": "car_brand",
                                "filtering_options": ["hard_filters", "other_facet_values"]
                            },
                            {
                                "name": "car_model",
                                "filtering_options": ["hard_filters", "other_facet_values"]
                            },
                             {
                                "name": "car_year",
                                "filtering_options": ["hard_filters", "other_facet_values"]
                            },
                            {
                                "name": "city",
                                "filtering_options": ["hard_filters", "other_facet_values"]
                            }
                        ]
                    }
                }
            }
        ]
    }
 }

次の応答には、その要求によって返されるデータが含まれています。

{
  "widgets": [
    {
      "rfk_id""rfkid_7",
      "type""content_grid",
      "used_in""page",
      "entity""car",
      "facet": [
        {
          "name""car_brand",
          "label""Brand",
          "value": [
            {
              "id""facetid_9ssdk0c13d7e384l6735y6904z30055yap70q8zw",
              "text""Ford",
              "count"10
            },
            {
              "id""facetid_9x7wb5q2cq323s80n47y4ha2a0791uct00r7743a",
              "text""Porsche",
              "count"6
            }
          ]
        },
        {
          "name""car_model",
          "label""Model",
          "value": [
            {
              "id""facetid_23738gzg2e5n984k3pu733kpf4y930fo18q80iri",
              "text""Fiesta",
              "count"1
            },
            {
              "id""facetid_12yrm13881j0ra2mgll579rmuz5gg2n4f01560d0",
              "text""Focus",
              "count"6
            },
            {
              "id""facetid_12yrm13881j0ra2mgll579rmuz5gg2n4f01560d1",
              "text""Kuga",
              "count"2
            },
            {
              "id""facetid_12yrm13881j0ra2mgll579rmuz5gg2n4f01560d2",
              "text""Ranger",
              "count"1
            },
            {
              "id""facetid_23738gzg2e5n984k3pu733kpf4y930fo18q80iri2",
              "text""Cayenne",
              "count"4
            },
            {
              "id""facetid_12yrm13881j0ra2mgll579rmuz5gg2n4f01560d3",
              "text""Macan",
              "count"1
            },
            {
              "id""facetid_12yrm13881j0ra2mgll579rmuz5gg2n4f01560d4",
              "text""Taycan",
              "count"1
            }
          ]
        },
        {
          "name""car_year",
          "label""Year",
          "value": [
            {
              "id""facetid_98spr93e7w49s9l1bobn72c06y94c18jzl64jj94",
              "text""2023",
              "count"2
            },
            {
              "id""facetid_yvfb0615m5ir28rz8wuq72038lf3ij43psm4m94x",
              "text""2022",
              "count"5
            },
            {
              "id""facetid_98spr93e7w49s9l1bobn72c06y94c18jzl64jj95",
              "text""2019",
              "count"1
            },
            {
              "id""facetid_yvfb0615m5ir28rz8wuq72038lf3ij43psm4m94y",
              "text""2018",
              "count"5
            },
            {
              "id""facetid_98spr93e7w49s9l1bobn72c06y94c18jzl64jj96",
              "text""2017",
              "count"3
            }
          ]
        },
        {
          "name""city",
          "label""City",
          "value": [
            {
              "id""facetid_fp1c8287ea7k71h6070hpg3x7a87mo79bcdz4xv4",
              "text""Kungsbacka",
              "count"1
            },
            {
              "id""facetid_5439e8r769543v350f86lx0845ygv60j20z2wmf9",
              "text""Bromma",
                            "count": 1
                        }
                    ]
                }
            ],
              "count"2
                    {
                    "card_brand": "Ford",
                    "car_model": "Fiesta",
                    "city": "Orlando",
                    "car_year": "2021",
                    "id": "64218"
                },
                {
                    "card_brand": "Kia",
                    "car_model": "Ceed SWPlug",
                    "city": "Atlanta",
                    "car_year": "2021",
                    "id": "64299"
                },
                {
                    "card_brand": "Kia",
                    "car_model": "XCeedPlug",
                    "city": "Seattle",
                    "car_year": "2021",
                    "id": "63932"
                }
            },
            {
              "id""facetid_fp1c8287ea7k71h6070hpg3x7a87mo79bcdz4xv5",
              "text""Eskilstuna",
              "count"2
            },
            {
              "id""facetid_5439e8r769543v350f86lx0845ygv60j20z2wmf0",
              "text""Molndal",
              "count"5
            },
            {
              "id""facetid_fp1c8287ea7k71h6070hpg3x7a87mo79bcdz4xv6",
              "text""Kristianstad",
              "count"3
            },
            {
              "id""facetid_5439e8r769543v350f86lx0845ygv60j20z2wmf1",
              "text""Segeltorp",
              "count"2
            },
            {
              "id""facetid_fp1c8287ea7k71h6070hpg3x7a87mo79bcdz4xv7",
              "text""Halmstad",
              "count"1
            }
          ]
        }
      ],
      "content": [
        {
          "car_brand""Ford",
          "car_model""Fiesta",
          "city""Kungsbacka",
          "car_year""2023",
          "id""64218"
        },
        {
          "car_brand""Ford",
          "car_model""Focus",
          "city""Bromma",
          "car_year""2022",
          "id""64219"
        },
        {
          "car_brand""Ford",
          "car_model""Kuga",
          "city""Eskilstuna",
          "car_year""2019",
          "id""64220"
        },
        {
          "car_brand""Ford",
          "car_model""Ranger",
          "city""Molndal",
          "car_year""2018",
          "id""64221"
        },
        {
          "car_brand""Porsche",
          "car_model""Cayenne",
          "city""Kristianstad",
          "car_year""2017",
          "id""64222"
        },
        {
          "car_brand""Porsche",
          "car_model""Macan",
          "city""Segeltorp",
          "car_year""2022",
          "id""64223"
        },
        {
          "car_brand""Porsche",
          "car_model""Taycan",
          "city""Halmstad",
          "car_year""2018",
          "id""64224"
        }
    ...
      ],
      "total_item"16,
      "limit"50,
      "offset"0
    }
  ],
  "dt"30,
  "ts"1727250342206
}

このデータでは、次のようになります。

  • facet配列内のすべての項目には、インデックス作成中に作成された、そのファセット項目に関連付けられた一意のファセットオブジェクトを含むvalueパラメータがあります。

  • インデックス付きのすべての車は、リクエストにファセット フィルターが含まれていないため、content配列に一覧表示されます。

ファセット値の数の増加に関する問題

在庫にある車の数が増えるにつれて、ブランド、モデル、年式、都市の数もそれに伴って増加する可能性があります。これにより、これら4つのfacetsを使用したフィルタリングがますます複雑になり、追加のオーバーヘッドが発生し、応答時間が長くなります。

たとえば、自動車販売店が20都市の10ブランドの6つのモデルを提供する場合、インデックス作成プロセス中に作成されるファセット オブジェクトの数は、自動車ストックが製造されたさまざまな年を掛けて1,200に増加します。すべての要求に対してsearch.facet配列にこれだけ多くのファセットオブジェクトを含めることは非効率的であり、過剰なパフォーマンスリソースを消費します。

フラットfacetsを使用すると、ブランドとモデルの関係が明らかではないため、フロントエンドでのこれらのアイテムの表示方法も複雑になります。

階層的なfacetsのソリューション

この例の問題の解決策は、階層的なfacetsを使用することです。

検索でフィルターを組み合わせて階層facetsを使用するには、階層ファセット戦略を実装する必要があります。

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