フィルタリング・facets
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
ファセットレベルでフィルタリングできます。つまり、ファセット内の値をフィルタリングします。これを行うには、search.facet.types.filterオブジェクトを追加してください。オプションで、widget.items.search.facet.types.filtering_optionsオブジェクトを追加することもできます。
これらのオブジェクトのデータモデルについては、SearchおよびRecommendation API参照を参照してください。
用語の側面のフィルタリング
この例では、プロダクトと呼ばれるファセットをフィルタリングしたいです。次のことをしたいのです:
-
アイテムは2つのファセット値、すなわちファステット値Aかファステット値Bのいずれかから取得します。この場合、filterオブジェクトを使い、orをtypeとして渡し、2つのファセット値のIDをvaluesとして渡します。
-
ハードフィルター、つまりリクエスト全体に適用される事前に決められたフィルターを適用します。この場合、filtering_optionsオブジェクトの値としてhard_filtersを渡します。
-
現在のファセット、つまりオブジェクトのファセットにフィルターをかけます。つまり、訪問者が例えばファセット値Aを選択すると、ファセット値Bは消えます。そのため、own_valuesをfiltering_optionsオブジェクトの値として渡します。
-
他の面のフィルターを現在のファセットに適用facets。これは、訪問者が他のファセットの値を他のfacetsで選択すると、現在のファセットのファセット値は、フィルターがまだ適用されているかどうかによって動的に変化することを意味します。そのため、filtering_optionsオブジェクトの値としてother_facet_valuesを渡します。
以下のコードサンプルは、リクエストの作成方法を示しています:
{ "widget": { "items": { "rfk_id": "rfkid_7", "entity": "product", "search": { "facet": { "types": { "name": "product", "max": 5, "filtering_options": "own_values", "hard_filters", "other_facet_values" , "filter": { "type": "or", "values": "facetid_A", "facetid_A"
} }
} } }
}, "context": { "locale": { "country": "us", "language": "en" } } }
動的属性のフィルタリング
動的属性のファセットをフィルタリングすることは、用語のファセットやヒストグラムのファセットをフィルタリングするのと似ています。主な違いは、動的属性のファセットを扱う場合、facet.types.nameが動的属性の名前である点です。
この例では、attribute_tags.ID01動的属性のファセットをフィルタリングしたいです。アイテムは2つのファセット値、フェイス値Aか フェイス値Bのいずれかから選びたいです。この場合、widget.item.search.facet.types.filterオブジェクトを使い、orをtypeとして渡し、2つのファセット値のIDをvaluesとして渡します。
以下のコードサンプルは、リクエストの作成方法を示しています:
{ "widget": { "items": { "rfk_id": "rfkid_7", "entity": "product", "search": { "facet": { "types": { "name": "attribute_tags.ID9", "filter": { "type": "or", "values": "facetid_A", "facetid_B"
} }
} } }
}, "context": { "locale": { "country": "us", "language": "en" } } }
複雑なファセットフィルターの利用
ネストされたオブジェクトで複雑なファセットフィルターを作成するには、facet.types.filterオブジェクト内に複数のオペレーターを使用します。
レンジの面を持つ複雑なフィルターの使用
複雑なファセットフィルターの一般的なユースケースは、GUIにfacetsのダブルスライダーがあり、Review rating 、Price、Newnessなどの値が割り当てられている場合です。このような場合、量より小さいものも大きいものも表示できる必要があります。
例えば、アイテムの追加日から結果を絞り込むのに役立つNewnessファセットがあります。ファセットの値は0から30までの範囲で、content itemsは0日前から30日前まで追加されたことを意味します。訪問者が10日前から20日前の追加アイテムを望んでいると仮定し、それに応じてスライダーを動かします。
以下のサンプルリクエストは、10(含む)から20までの値でフィルタリングされたNewnessの扱い方を示しています。
{ "widget": { "items": { "rfk_id": "rfkid_7", "entity": "content", "search": { "facet": { "types": { "name": "newness", "filter": { "type": "and", "values": { "type": "gte", "value": 5 }, { "type": "lt", "value": 10 }
} }
} } }
}, "context": { "locale": { "country": "us", "language": "en" } } }
項面を持つ複素フィルターの使用
また、用語facetsを含む複雑なフィルターを使うこともできます。
例えば、書店のウェブサイトとGenreファセットがあります。このファセットはstring属性に基づいています。各content item(つまり各本)は複数のジャンルを持つことができます。例えば、本のジャン ル 値はYoung adult、Fantasy、Mystery、Dystopian、Fictionを持つかもしれません。訪問者はMysteryかFictionの本を見たいが、Young adult本は見たくないのです。
以下のサンプルリクエストは、ミステリー や フィクション の項目をフィルタリングする方法を示していますが、ヤングアダルトではありません。
{ "widget": { "items": { "rfk_id": "rfkid_7", "entity": "product", "search": { "facet": { "types": { "name": "genre", "filter": { "type": "and", "values": { "type": "not", "filter": { "type": "eq", "value": "Young adult" } }, { "type": "or", "filters": { "type": "eq", "value": "Fiction" }, { "type": "eq", "value": "Mystery" }
}
} }
} } }
}, "context": { "locale": { "country": "us", "language": "en" } } }