Skip to content

Filter relevance

Filter Ranking Solutioning

Search RE

GOAL: Given a user search query, and a list of associated result products, come up with following things
Ranking of Labels for Static Filters
Within a Static Filter Label, Ranking of Label Values
Figuring important attribute Filter Label and Values to be shown as HVF
Ranking of these HVF Filters
Figuring important attribute Filter Label and Values to be shown as IF
Ranking of these IF Filters

Search Data for a Query
SSCAT
Product
Attributes
SSCAT1
P11
k1:v1, k2:v2, k3:v3
SSCAT1
P12
k2:v2, k3:v3, k4:v4
SSCAT1
P13
k4:v4, k5:v5, k1; v1
SSCAT2
P21
k1:v1, k2:v2, k5:v5
SSCAT2
P22
k6:v6, k7:v7, k2:v2
SSCAT2
P23
k3:v3, k4:v4, k1:v1
There are no rows in this table
Current Scenario for Static Filters
For a given query, a list of products are returned. An intersection of their respective Label Keys and Values are taken, if there are decent products present for a particular Key-Value pair, that particular Filter is shown on the app.
There is a static position given to every Key and Value and the Filter Label and Label Value is displayed at that position.

DS Intervention
Depending on the query, the ranking of Filter label and label values should be dynamically changed.
Need to build come up with a relevance score for each Filter Label and Label Value.

The Relevance score will be calculated at (Category and Label) and (Category and Label Value) level.
DS Model Output
SSCAT
Key
Score
SSCAT1
k1
0.9
SSCAT1
k2
0.7
SSCAT1
k3
0.4
SSCAT1
k4
0.3
SSCAT1
k5
0.1
SSCAT2
k1
0.9
SSCAT2
k2
0.8
SSCAT2
k3
0.6
SSCAT2
k4
0.4
SSCAT2
k5
0.2
SSCAT2
k6
0.1
SSCAT2
k7
0.04
There are no rows in this table
Signals Used to get Relevance Score
For a given (SSCat_i, Key_i) {can be extended to Value}


Features Available For now
Existing demand signals for existing label values (X%) - Factors in demand signals proactively used by users to channelise intent
Historical filter usage - Factors in usage spread of filters across SSCAT cross label value combinations
Historical search usage - Factors in attributes forming pareto volume in across base SSCATs search queries
Alternative demand signals for new label values (Y%) -
Order profile - Factors OC coming in for various category cross label value combinations
Key Importance in Ordered Products in a SSCatId (in last [1,3,7,14] days) → (No of ordered products with Key_i in SSCat_i/total ordered products in SSCat_i)
Click profile - Factors clicks coming in for various category cross label combinations
Key Importance in Clicked Products in a SSCatId (in last [1,3,7,14] days) → (No of clicked products with Key_i in SSCat_i/total clicked products in SSCat_i)
This importance is calculated for each RE (Wishlist, Search, PDP Reco, FY)
View profile - Factors views coming in for various category cross label value combinations
Key Importance in Viewed Products in a SSCatId (in last [1,3,7,14] days) → (No of viewed products with Key_i in SSCat_i/total viewed products in SSCat_i)
This importance is calculated for each RE (Wishlist, Search, PDP Reco, FY)
View to click ratio - Factors clicks coming in per view for a given category cross label value combinations
Average Click/View (in last [1,3,7,14] days) → AVG over all products with Key_i in SSCat_i [(No of times a product was clicked)/(No of times that product was viewed)]
this ratio is calculated for each RE
Lets say for a sscatid there 1000 products. Each product has a c/v value associated with it.
Click to order ratio - Factors orders coming in per product click for a given category cross label value combination
Average Order/View (in last [1,3,7,14] days) → AVG over all products with Key_i in SSCat_i [(No of times a product was ordered)/(No of times that product was viewed)]
Attribute level supply spread (Z%)
Supply profile - Factors count of products present in the platform a given category cross label value combination
Key importance in SSCatId → (No of Products with Key_i in SSCat_i)/(total products in SSCat_i)
Remove keys that have extremely low Key Importance (For example in Face Wipes Category, 2 products have Sleeve Length attribute key out of 90k products. This is an anomaly because Sleeve Length can never be relevant key for Face Wipes category). Removing such keys will help removing these anomalies.
Attribute level quality spread (AA%) - Factors pushing filter labels where ratings are typically higher
% of High quality Products (> 4.0 Rating) with Key_i in SSCat_i

How do we finalise X,Y,Z and AA - Principally filter and historical search usage are the most reflective of an user’s intent to buy. Other interaction metrics could give a directional sense of the attribute classes most consumed, interacted or transacted per category.
With this understanding, we’d want to weigh existing demand signals at ~50% and alternative signal at 40%, while keeping a 5% explore budget for supply and quality spread.
To align on final ranker, we could run variants with different weights and check performance in form of filter’s CTR and conversion as the output.



Open point - Should we build distinct models per RE and prioritises view / click / order interactions on that RE or do this iteratively
C
Table 38
Category
Product ID
C/V
Total C/V
Contribution to Total C/v
Cumulative Sum
Bucket
Bucket Value
P1
0.3
0.531
0.5649717514
0.56
High
3
P2
0.15
0.531
0.2824858757
0.84
Medium
2
P3
0.06
0.531
0.1129943503
0.96
Low
1
P4
0.02
0.531
0.03766478343
0.99
Low
1
P5
0.001
0.531
0.001883239171
1
Low
1
Product ID
Attribute Key
P1
K1, K2, K3
P2
K2, K4, K5
P3
K1 K3, K6
P4
K4, K7, K2
P5
K1, K4, K5
Attribute Key
Associated C/Vs
Avg
WeightedAverage
Rank
K1
0.3, 0.06, 0.001
0.12
0.19
3
K2
0.15, 0.3, 0.02
0.15
0.2
2
K3
0.3, 0.06
0.18
0.24
1
K4
0.15, 0.001
0.0755
0.1
4
K5
0.15, 0.001
0.0755
0.1
5
K6
0.06
0.06
0.06
6
K7
0.02
0.02
0.02
7
There are no rows in this table




Features Not Readily Available
Query Level feature: For given SSCat_i, all queries that talk about Key_i/total queries for SSCat_i
Review Level feature: For a given SSCat_i, all reviews that talk about Key_i/total review for SSCat_i

Using these features come up with a relevance score for each (SSCat_i, Key_i)

IMP NOTE:
In an ideal world, where all the current labels/label values that the sellers are uploading are reflected on the static and HVF filters, we would use the user-filter interaction signals to understand what filters are better. For ex (number of product ordered/no of products clicked/no of products viewed) → post application of filter.
This is a very strong signal which directly correlates with the filter importance. However, currently we are not showing on the app, all the possible filters that the sellers are uploading as taxonomy attributes. Hence for the time being these aforementioned features are not being used.

However once we put the Filter Label and Label Value Rationalisation fix in the tech and all the filter label and label values start getting shown on the app. We can start getting these signals and then use it to rank our filters even better.



DS solution overview for Filter ranking service


Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.