lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emir Arnautović <emir.arnauto...@sematext.com>
Subject Re: Limiting by range of sum across documents
Date Mon, 13 Nov 2017 21:58:14 GMT
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, chris@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&rsquo;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):
> 
>> 
> 
>> &hellip;&json.facet={sumByManu:{terms:{field:manufacturer,facet:{sum:&rdquo;sum(price)&rdquo;}}}}
> 
>> 
> 
>> HTH,
> 
>> Emir
> 
>> --
> 
>> Monitoring - Log Management - Alerting - Anomaly Detection
> 
>> Solr & Elasticsearch Consulting Support Training - http://sematext.com/
> 
>> 
> 
>> 
> 
>> 
> 
>>> On 12 Nov 2017, at 19:09, chris@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
> 
>>> 
> 
>> 
> 
>> 


Mime
View raw message