検索結果内の項目のフィルタリング
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
SearchやSitecore Searchの推薦リクエストにfilterオブジェクトを追加して、検索結果の項目を制限できます。これを行うには、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 }
あるいはフィルター
2つ以上のコンテンツやファセットタイプのいずれかを使いたい場合は、orフィルターを使います。 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します。
例えば、公園とレクリエーションのウェブサイトがあり、訪問者は検索ページで「 近くに結果を表示 」オプションを選択できます。南緯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つの頂点を定義してください。
例えば、地域のイベントを表示するウェブサイトがあり、四方面のエリア内の訪問者に関連するイベントを表示したい場合です。これを行うには、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ドル以上でビ ッグブランドのブランドでない商品を見たい場合です。そのためには、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 }