Hi Chris, I misunderstood your requirement. I am not aware of some facet result filtering feature. What you could do is sort facet results by sum and load page by page but that does not sound like a good solution. Did you try using streaming expressions - I don’t have much experience with this feature so would have to play a bit before giving answer if possible and how to do it, but I guess someone will be able to give some pointers.
Thanks, Emir -- Monitoring - Log Management - Alerting - Anomaly Detection Solr & Elasticsearch Consulting Support Training - http://sematext.com/ > On 14 Nov 2017, at 16:51, ch...@yeeplusplus.com wrote: > > > > > I'm not looking for products where the price is in the range [100, 200]. > I'm looking for manufacturers for which the sum of the prices of all of their > products is in the range [100, 200]. > � > > >> Hi Chris, > >> > >> I assumed that you apply some sort of fq=price:[100 TO 200] to focus on >> wanted products. > >> > >> Can you share full json faceting request - numFound:0 suggest that something >> is completely wrong. > >> > >> Thanks, > >> Emir > >> -- > >> Monitoring - Log Management - Alerting - Anomaly Detection > >> Solr & Elasticsearch Consulting Support Training - http://sematext.com/ > >> > >> > >> > >>> On 13 Nov 2017, at 21:56, ch...@yeeplusplus.com wrote: > >>> > >>> > >>> > >>> > >>> � > >>> Hi Emir, > >>> I can't apply filters to the original query because I don't know in advance >>> which filters will meet the criterion I'm looking for.� Unless I'm missing >>> something obvious.� > >>> � > >>> I tried the JSON facet you suggested but received > >>> > >>> "response":{"numFound":0,"start":0,"maxScore":0.0,"docs":[] > >>> > >>> � }, > >>> > >>> � "facet_counts":{ > >>> > >>> � � "facet_queries":{}, > >>> > >>> � � "facet_fields":{}, > >>> > >>> � � "facet_dates":{}, > >>> > >>> � � "facet_ranges":{}, > >>> > >>> � � "facet_intervals":{}, > >>> > >>> � � "facet_heatmaps":{}}, > >>> > >>> � "facets":{ > >>> > >>> � � "count":0}} > >>> > >>> � > >>> > >>> � > >>> > >>> > >>>> Hi Chris, > >>> > >>>> You mention it returns all manufacturers? Even after you apply filters >>>> (don’t see filter in your example)? You can control how many facets >>>> are returned with facet.limit and you can use face.pivot.mincount to >>>> determine how many facets are returned. If you calculate sum on > all >>> manufacturers, it can last. > >>>> > >>> > >>>> Maybe you can try json faceting. Something like (url style): > >>> > >>>> > >>> > >>>> …&json.facet={sumByManu:{terms:{field:manufacturer,facet:{sum:”sum(price)”}}}} > >>> > >>>> > >>> > >>>> HTH, > >>> > >>>> Emir > >>> > >>>> -- > >>> > >>>> Monitoring - Log Management - Alerting - Anomaly Detection > >>> > >>>> Solr & Elasticsearch Consulting Support Training - http://sematext.com/ > >>> > >>>> > >>> > >>>> > >>> > >>>> > >>> > >>>>> On 12 Nov 2017, at 19:09, ch...@yeeplusplus.com wrote: > >>> > >>>>> > >>> > >>>>> > >>> > >>>>> > >>> > >>>>> > >>> > >>>>> I have documents in solr that look like this: > >>> > >>>>> { > >>> > >>>>> "id": "acme-1", > >>> > >>>>> "manufacturer": "acme", > >>> > >>>>> "product_name": "Foo", > >>> > >>>>> "price": 3.4 > >>> > >>>>> } > >>> > >>>>> > >>> > >>>>> There are about > >>> > >>>>> 150,000 manufacturers, each of which have between 20,000 and 1,000,000 >>>>> products. > >>> > >>>>> I'd like to return the sum of all prices that are in the range [100, >>>>> 200], faceted by manufacturer. In other words, for each manufacturer, sum >>>>> the prices of all products for that manufacturer, > >>> > >>>>> and return the sum and the manufacturer name. For example: > >>> > >>>>> [ > >>> > >>>>> { > >>> > >>>>> "manufacturer": "acme", > >>> > >>>>> "sum": 150.5 > >>> > >>>>> }, > >>> > >>>>> { > >>> > >>>>> "manufacturer": "Johnson, > >>> > >>>>> Inc.", > >>> > >>>>> "sum": 167.0 > >>> > >>>>> }, > >>> > >>>>> ... > >>> > >>>>> ] > >>> > >>>>> > >>> > >>>>> I tried this: > >>> > >>>>> q=*:*&rows=0&stats=true&stats.field={!tag=piv1 >>>>> sum=true}price&facet=true&facet.pivot={!stats=piv1}manufacturer > >>> > >>>>> which "works" on a test > >>> > >>>>> subset of 1,000 manufacturers. However, there are two problems: > >>> > >>>>> 1) This query returns all the manufacturers, so I have to iterate over >>>>> the entire response object to extract the ones I want. > >>> > >>>>> 2) The query on the whole data set takes more than 600 seconds to return, >>>>> which doesn't fit > >>> > >>>>> our target response time > >>> > >>>>> > >>> > >>>>> How can I perform this query? > >>> > >>>>> We're using solr version 5.5.5. > >>> > >>>>> > >>> > >>>>> > >>> > >>>>> > >>> > >>>>> Thanks, > >>> > >>>>> Chris > >>> > >>>>> > >>> > >>>> > >>> > >>>> > >> > >>