Overzicht van filterlogica
Filteren van items is een van de belangrijkste mogelijkheden in de Intelligent Recommendations-service. Met behulp van filters kunnen duizenden items worden verfijnd op basis van bepaalde aanpasbare parameters zoals maat, kleur, categorie, prijs, enzovoort en door alleen items te retourneren die voldoen aan de behoeften en interesses van de eindgebruiker.
In dit document wordt de filteroplossing voor Intelligent Recommendations beschreven en is een onderverdeling in de volgende gedeelten gemaakt:
Sectietitel | Samenzicht |
---|---|
Filtermogelijkheden | De logische filterbewerkingen die we ondersteunen. |
Gegevensschema | Het gegevenscontract voor het definiëren van filters voor productitems en varianten. |
API | De filterquerytaal van onze runtime-service. |
U moet ervoor zorgen dat het gegevensschema en de API goed zijn gedocumenteerd, strikt en zo eenvoudig mogelijk zijn voor een goede klantervaring (eindgebruiker).
Filtermogelijkheden
U kunt filterwaarden per item/variant instellen en op basis van deze waarden de runtime-service-API van Intelligent Recommendations opvragen met verschillende filteroperators. Zie het gedeelte Gegevensschema hieronder.
De service Intelligent Recommendations ondersteunt momenteel de volgende filteroperators:
Gelijk aan
Logica van Is gelijk aan-operator
Let D be the set of filter values defined for an item X, and ‘a’ be the API requested value.
X will pass the filter if and only if a∈D.
Voorbeelden:
Itemwaarden (D) | API-waarde (a) | Tevreden |
---|---|---|
{Blauw, Zwart, Rood} | Rood | True |
{Blauw, Zwart} | Rood | False |
∅ | Rood | False |
Logica van meerdere waarden
In dit gedeelte worden de logicaregels van de operators AND
, OR
, Range
en Availability
behandeld.
Operatorlogica voor EN/OF
Operator | Definitie |
---|---|
EN | Let A be the API requested set of values, X will pass the filter iff A ⊆ D |
OF | Let A be the API requested set of values, X will pass the filter if and only if A∩D ≠∅ |
Aanvullende opmerkingen:
- Ondersteunt niet-hoofdlettergevoelige tekenreeksen.
- Booleaanse waarden kunnen worden weergegeven door de tekenreeksen 'true' en 'false'.
Voorbeelden van EN/OF-logica
Logische operator | Itemwaarden (D) | API-waarden (A) | Tevreden |
---|---|---|---|
OF | {Blauw, Zwart, Rood} | {Groen, Wit} | False |
OF | {Blauw, Zwart, Rood} | {Groen, Blauw} | True |
EN | {Blauw, Zwart, Rood} | {Groen, Blauw} | False |
EN | {Blauw, Zwart, Rood} | {Rood, Blauw} | True |
Bereik
De operator ondersteunt alleen numerieke waarden en is tevreden als en alleen als ten minste één van de itemfilterwaarden binnen het door de API gevraagde bereik vallen.
- Speciale gevallen:
- Groter dan (of gelijk aan)
- Kleiner dan (of gelijk aan)
Voorbeelden van filteren op bereik
waarden | API-bereik | Tevreden |
---|---|---|
{2,9,23} | 5 <= waarde < 15 | True |
{50,128} | 128 < waarde | False |
Beschikbaarheidsfilter
Dit is een speciaal op tijd gebaseerd filter dat alle items uitfiltert die buiten het beschikbaarheidstijdbereik vallen. Het beschikbaarheidstijdbereik wordt per item gedefinieerd in het beschikbaarheidsgegevensschema. Dit filter wordt altijd standaard uitgevoerd.
Gegevensschema
Met de service Intelligent Recommendations kunt u maximaal 20 verschillende filters definiëren. U kunt het volgende gegevensschema gebruiken om filterwaarden voor uw productitems te definiëren (zie voor meer informatie onze Catalogusgegevensentiteitgids voor filters):
Name | Gegevenstype | Verplicht | Opmerkingen |
---|---|---|---|
ItemId | String | Ja | |
ItemVariantId | String | No | |
FilterName | String | Ja | Lengte is beperkt tot 64 tekens. |
FilterValue | String | Ja | Lengte is beperkt tot 64 tekens. |
FilterType | String | Ja | Mogelijke waarden zijn: Tekstueel, Numeriek. |
Itemmodel en itemvarianten
- Een item (of hoofditem) kan een een-op-veel-relatie hebben met de itemvarianten ervan.
- Een variant neemt standaard alle kenmerken van het hoofditem over. U kunt een kenmerk overschrijven door het expliciet te declareren, zoals in het onderstaande voorbeeld wordt getoond.
Voor filters met meerdere waarden moet u meerdere rijen met één waarde opgeven, waarbij elke rij een andere waarde heeft.
Voorbeeld:
ItemId | ItemVariantId | FilterName | FilterValue | FilterType |
---|---|---|---|---|
Item1 | Color | Rood | Tekstueel | |
Item1 | Item1Var1 | Color | Blauw | Tekstueel |
Item1 | Item1Var1 | Color | Zwart | Tekstueel |
Item1 | Omvang | 38.0 | Numeriek |
In dit voorbeeld is Item 1 het hoofditem en heeft het één kleur Rood en één maat 38,0. Item1Var1 is een variant van Item 1 en heeft twee kleuren: Blauw en Zwart (overschreven waarden) en één maat: 38,0 (overgenomen waarde).
API
De filter-API voor Intelligent Recommendations is gebaseerd op REST-API-richtlijnen van Microsoft.
$filter
is de URL-parameter die de volledige Booleaanse expressie van de query bevat.
De expressie gespecificeerd met$filter
wordt voor elk item geëvalueerd, en alleen items waarvan de expressie als waar wordt geëvalueerd, worden in de respons opgenomen.
[Opmerking!]
- Alleen filters die op naam (niet-hoofdlettergevoelig) overeenkomen met een van de FilterName-waarden (van gegevensschema) en een geschikt FilterType (tekstueel/numeriek) hebben voor de gevraagde filterbewerking, worden uitgevoerd. De rest wordt genegeerd.
- Een itemmodel wordt geretourneerd als de expressie voor de eigen filterwaarden als waar wordt geëvalueerd OF voor een van de bijbehorende varianten.
In de volgende tabel worden de ondersteunde filteroperators beschreven:
Operator | Type | Operator | Omschrijving | Voorbeeld |
---|---|---|---|---|
Vergelijking | eq | Gelijk aan | kleur eq 'rood' | |
Vergelijking | gt | Groter dan | maat gt 34 | |
Vergelijking | ge | Groter dan of gelijk aan | maat ge 36 | |
Vergelijking | lt | Kleiner dan | maat lt 42 | |
Vergelijking | le | Kleiner dan of gelijk aan | maat le 40 | |
Logisch | and | Logisch en | maat le 44 en gt 38 | |
Logisch | or | Logisch of | kleur eq 'rood' of kleur eq 'blauw' | |
Groepering | ( ) | Prioriteitsgroepering | (kleur eq 'rood' of kleur eq 'blauw') en maat gt 38 |
URL-voorbeelden:
Reco/v1.0/New?$filter=color eq ‘Red’
Reco/v1.0/Popular?$filter=color eq ‘Red’ and size lt 40
Reco/v1.0/Picks?$filter=(name eq ‘Red’ or name eq 'Blue') and size le 44 and size gt 38
[!Opmerking]
URL-codering is vereist.
Ondersteunde scenario's
- Logische EN-operator tussen verschillende filters.
- OF-operator tussen verschillende waarden van hetzelfde filter. Foutafhandeling - voor een niet-ondersteunde query retourneert de service een ongeldige HTTP-aanvraagstatus (400).
Zie ook
Intelligent Recommendations-APISnelstartgids voor het aanroepen van de APIVeelvoorkomende logboekfoutenOverzicht van gegevenscontract