検索結果の項目のフィルタリング

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

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

filterオブジェクトをSearchおよび推奨リクエストに追加して、検索結果の項目を制限Sitecore Searchできます。これを行うには、widget.items.search.filterオブジェクトを追加します。

メモ

APIコールでフィルタを渡す前に、管理者がSearchでフィルタリングの属性を設定していることを確認してください。

このオブジェクトのデータモデルについては、Search and Recommendation APIリファレンスを参照してください。

以下は、要求レベルでフィルターの要求を作成する方法を示す例です。

等しいフィルター

フィルタリングの簡単な方法は、eqフィルター typeを使用することです。

たとえば、blogコンテンツのみを表示するとします。次のコード サンプルは、要求を作成する方法を示しています。

{
    "widget": {
        "items": [
            {
                "rfk_id": "rfkid_7",
                "entity": "content",
                "search": {
                    "content": {},
                    "filter": {
                        "name": "type",
                        "type": "eq",
                        "value": "blogs"
                    }
                }
            }
        ]
    },
    "context": {
        "locale": {
            "country": "us",
            "language": "en"
        }
    }
}

上記の要求に対する回答は次のとおりです。

{
    "widgets": [
        {
            "rfk_id": "rfkid_7",
            "entity": "content",
            "content": [
                {
                    "description": "Last week, our...",
                    "id": "https___www_sitecore_com_blog_cloud_what-is-cloud-native-saas",
                    "image_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/images/home/blog/commerce/bp/26gettyimage159993825_herobig_272.jpg?mw=600&md=20210629T181219Z&hash=37F6BE28053A4ABE6B681D50313E44EB&t=544x310",
                    "source_id": "388218",
                    "subtitle": null,
                    "title": "What is cloud-native SaaS?",
                    "type": "blogs",
                    "url": "https://www.sitecore.com/blog/cloud/what-is-cloud-native-saas"
                },
                {
                    "description": "What is serverless...",
                    "id": "https___www_sitecore_com_blog_cloud_what-is-serverless-architecture",
                    "image_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/images/home/blog/commerce/bp/28gettyimage686721451_herobig_272.jpg?mw=600&md=20210629T182737Z&hash=C6AFD2B27D694091D473C4694E694BA2&t=544x310",
                    "source_id": "388218",
                    "subtitle": null,
                    "title": "What is serverless architecture?",
                    "type": "blogs",
                    "url": "https://www.sitecore.com/blog/cloud/what-is-serverless-architecture"
                }, 

        ...
            ],
            "total_item": 220,
            "limit": 10,
            "offset": 0
        }
    ],
    "dt": 39,
    "ts": 1669044489693
}

またはフィルター

orフィルターは、2つ以上のコンテンツまたはファセットの種類のいずれかが必要な場合に使用します。orフィルターは複合フィルターであるため、その中に他のフィルターを入れ子にする必要があります。

たとえば、blogコンテンツまたはproductコンテンツを表示するとします。 orフィルターを使用し、その中に2つのeqフィルターを入れ子にします。

次のコード サンプルは、要求を作成する方法を示しています。

{
    "widget": {
        "items": [
            {
                "rfk_id": "rfkid_7",
                "entity": "content",
                "search": {
                    "content": {},
                    "filter": {
                        "type": "or",
                        "filters": [
                            {
                                "name": "type",
                                "type": "eq",
                                "value": "blogs"
                            },
                            {
                                "name": "type",
                                "type": "eq",
                                "value": "products"
                            }
                        ]
                    }
                }
            }
        ]
    },
    "context": {
        "locale": {
            "country": "us",
            "language": "en"
        }
    }
}

次のコードは、対応する応答を示しています。

{
    "widgets": [
        {
            "rfk_id": "rfkid_7",
            "entity": "content",
            "content": [
                {
                    "description": "Last week, our...",
                    "id": "https___www_sitecore_com_blog_cloud_what-is-cloud-native-saas",
                    "image_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/images/home/blog/commerce/bp/26gettyimage159993825_herobig_272.jpg?mw=600&md=20210629T181219Z&hash=37F6BE28053A4ABE6B681D50313E44EB&t=544x310",
                    "source_id": "388218",
                    "subtitle": null,
                    "title": "What is cloud-native SaaS?",
                    "type": "blogs",
                    "url": "https://www.sitecore.com/blog/cloud/what-is-cloud-native-saas"
                },
                {
                    "description": "What is serverless...",
                    "id": "https___www_sitecore_com_blog_cloud_what-is-serverless-architecture",
                    "image_url": "https://wwwsitecorecom.azureedge.net/-/media/sitecoresite/images/home/blog/commerce/bp/28gettyimage686721451_herobig_272.jpg?mw=600&md=20210629T182737Z&hash=C6AFD2B27D694091D473C4694E694BA2&t=544x310",
                    "source_id": "388218",
                    "subtitle": null,
                    "title": "What is serverless architecture?",
                    "type": "blogs",
                    "url": "https://www.sitecore.com/blog/cloud/what-is-serverless-architecture"
                }, 

        ...
            ],
            "total_item": 410,
            "limit": 10,
            "offset": 0
        }
    ],
    "dt": 21,
    "ts": 1669044585539
}

地理的フィルター

地理フィルタを使用して、Searchが検索して結果を返すエリアを定義します。これを行うには、geoDistanceまたはgeoWithinフィルタータイプを使用します。

円形領域内のフィルタリング

定義された円形領域に関連する結果のみを表示するには、filterオブジェクトのgeoDistance値を使用します。円の中心はlatitudeパラメータとlongitudeパラメータを使用して指定し、円の半径はdistanceパラメータを使用して指定します。

手記

フィルター オブジェクト内で緯度と経度を指定しない場合、Searchは次のメカニズムを使用してこれらの値を取得します。

  • まず、Searchはgeo context objectで緯度と経度の値を調べます。

  • 次に、geo context objectがない場合は、訪問者のブラウザまたはネイティブアプリのIPアドレスからおおよその緯度と経度をSearch推測します。

たとえば、公園とレクリエーションのWebサイトがあり、訪問者は検索ページでshow results near meオプションを選択できます。南緯59.11309610169502度、西経37.329354589260596度の訪問者からの半径50キロメートルに関連する結果を表示する必要があります。これを行うには、geoDistanceフィルターを使用し、訪問者の座標をlat値とlon値として渡します。

次のコード サンプルは、要求を作成する方法を示しています。

{
  "widget": {
    "items": [
      {
        "rfk_id": "rfkid_10",
        "entity": "product",
        "search": {
          "content": {},
          "filter": {
            "type": "geoDistance",
            "name": "location",
            "distance": "50km",
            "lat": -59.11309610169502,
            "lon": -37.329354589260596
          }
        }
      }
    ]
  }
}

ポリゴン領域内でのフィルタリング

定義された多角形領域に関連する結果のみを表示するには、filterオブジェクトのgeoWithin値を使用します。ポリゴンの頂点は、latitudeパラメーターとlongitudeパラメーターを使用して指定します。このフィルターが機能するように、少なくとも3つの頂点を定義します。

たとえば、ローカル イベントを表示するWebサイトがあり、訪問者に関連するイベントを4面のエリアで表示したいとします。これを行うには、geoWithinフィルター要求を作成し、エリアの4つの頂点の座標を渡します。

次のコード サンプルは、要求を作成する方法を示しています。

  "widget":{
    "items": [
      {
        "rfk_id": "rfkid_10",
        "entity": "product",
        "search": {
          "content": {},
          "filter": {
            "type": "geoWithin",
            "name": "location",
            "coordinates":{
              "lat": 43.194852,
              "lon": -79.570522
              },
              {
              "lat": 43.176515,
              "lon": -79.929493
              },
              {
                "lat": 43.521512,
                "lon": -79.912504
              },
              {
              "lat": 43.871014,
              "lon": -78.780655
              }
          }
        }
      }
    ]
  }

複雑なフィルター

複数の演算子を使用して、複雑なフィルターを作成できます。

たとえば、価格が5000を超えるが、ブランドbigbrandではないアイテムを表示するとします。これを行うには、notフィルターとより大きい (gt) フィルターを使用します。

次のコード サンプルは、要求を作成する方法を示しています。

{
    "widget": {
        "items": [
            {
                "rfk_id": "rfkid_7",
                "entity": "product",
                "search": {
                    "content": {},
                    "filter": {
                        "type": "and",
                        "filters": [
                            {
                                "type": "not",
                                "filter": {
                                    "name": "brand",
                                    "type": "eq",
                                    "value": "bigbrand"
                                }
                            },
                            {
                                "name": "price",
                                "type": "gt",
                                "value": 5000
                            }
                        ]
                    }
                }
            }
        ]
    },
    "context": {
        "locale": {
            "country": "us",
            "language": "en"
        }
    }
}

次のコードは、対応する応答を示しています。

    "widgets": [
        {
            "rfk_id": "rfkid_7",
            "entity": "product",
            "content": [
                {
                    "brand": "S&S Cycle",
                    "id": "1400066",
                    "name": "Wrinkle Black Powder-Coat 124 in. Hot Set-up Kit - 900-0564",
                    "price": 5948.96,
                    "sku": "1400066",
                },
                {
                    "brand": "S&S Cycle",
                    "id": "1400067",
                    "name": "Wrinkle Black Powder-Coat 124 in. Hot Set-up Kit - 900-0568",
                    "price": 5804.96,
                    "sku": "1400067",
                }, 

        ...
            ],
            "total_item": 52,
            "limit": 10,
            "offset": 0
        }
    ],
    "dt": 125,
    "ts": 1669045174268
}
この記事を改善するための提案がある場合は、 お知らせください!