Hi, any suggestions, whether it is feasible in this approach or any other approach?
Thanks in advance. Regards Kamal On Tue, Aug 27, 2024 at 10:06 PM Kamal Kishore Aggarwal < kkroyal....@gmail.com> wrote: > Hi, > > Currently, we have data in 2 collections - Product and its associated > offers > > offer collection data format > { > "id": "OFF1", > "p_id_ss": ["P1", "P2", "P3"......] // upto 6K product ids > in certain cases > "o_type_s": "50% Off Offer" // other 20 > fields > > }, { > "id": "OFF2", > "p_id_ss": ["P2", "P3"......] > "o_type_s": "20% Off On XYZ Card", > // other 20 fields > > }and so on till 50k documents................................. > > Product data format > { > "id": "P1", > "o_id_ss": ["OFF1", "OFF2", "OFF3"] > "p_name_s": "Men's Nike shoes", > "p_category_s": "Shoe" // other 50 fields > > }, { > "id": "P2", > "o_id_ss": ["OFF3", "OFF4", "OFF5"] > "p_name_s": "Women dress, > "p_category_s": "Dress" > // other 50 fields > } > and so on till 10k documents................................. > > In order to calculate facets at offer Level, we are using the below query > (Json facet + Aggregate Functions), which works fine. > > /select?q=*:*&rows=10&facet=true&facet.mincount=1&json.facet={"p_category":{"type":"terms","field":"p_category","domain":{"excludeTags":["p_id_s","o_id_ss","p_category"]},"facet":{"count":"unique(o_id_ss)"}}}&fq=p_id_s:P1 > > *But, lets there is scenario where there is filter on offer id, this query > is not returning correct facet count.* > > > select?q=*:*&rows=10&facet=true&facet.mincount=1&json.facet={"p_category_s":{"type":"terms","field":"p_category_s","domain":{"excludeTags":["p_id_s","o_id_ss","p_category_s"]},"facet":{"count":"unique(o_id_ss)"}}}&fq=o_id_ss:OFF-1 > > The count that is coming is more than 1 (as we are applying a filter on > one offer id). But, since the 'o_id_ss' is a multi-valued field, it is > giving a count based upon all the values in that field. > > Please suggest how to tune this query or there is another approach to > solve this requirement to fetch facet data for product fields at offer > level. > > Notes: > > • One offer can be tagged to multiple products. > • One product can be tagged to multiple offers. > > Regards > Kamal > >