You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by gwk <gi...@eyefi.nl> on 2009/06/18 17:09:05 UTC

Numerical range faceting

Hi,

I'm currently using facet.query to do my numerical range faceting. I 
basically use a fixed price range of €0 to €10000 in steps of €500 which 
means 20 facet.queries plus an extra facet.query for anything above 
€10000. I use the inclusive/exclusive query as per my question two days 
ago so the facets add up to the total number of products. This is done 
so that the javascript on my search page can accurately show the amount 
of products returned for a specified range before submitting it to the 
server by adding up the facet counts for the selected range.

I'm a bit concerned about the amount and size of my request to the 
server. Especially because there are other numerical values which might 
be interesting to facet on and I've noticed the server won't response 
correctly if I add (many) more facet.queries by decreasing the step 
size. I was really hoping for faceting options for numerical ranges 
similar to the date faceting options. The functionality would be 
practically identical as far as I can tell (which isn't very far as I 
know very little about the internals of Solr) so I was wondering if such 
options are planned or if I'm overlooking something.

Regards,

gwk

Re: Numerical range faceting

Posted by gwk <gi...@eyefi.nl>.
Shalin Shekhar Mangar wrote:
> On Tue, Jun 23, 2009 at 4:55 PM, gwk <gi...@eyefi.nl> wrote:
>
>   
>> I was wondering if someone is interested in a patch file and if so, where
>> should I post it?
>>
>>     
>
> This seems useful. Please open an issue and submit a patch. I'm sure there
> will be interest.
>
>   
Hi,

I cleaned up the code a bit, added some javadoc (I hope I did it 
correctly) and created a ticket: 
http://issues.apache.org/jira/browse/SOLR-1240

Regards,

gwk

Re: Numerical range faceting

Posted by Shalin Shekhar Mangar <sh...@gmail.com>.
On Tue, Jun 23, 2009 at 4:55 PM, gwk <gi...@eyefi.nl> wrote:

>
> I was wondering if someone is interested in a patch file and if so, where
> should I post it?
>

This seems useful. Please open an issue and submit a patch. I'm sure there
will be interest.

http://wiki.apache.org/solr/HowToContribute

-- 
Regards,
Shalin Shekhar Mangar.

Re: Numerical range faceting

Posted by gwk <gi...@eyefi.nl>.
gwk wrote:
> Hi,
>
> I'm currently using facet.query to do my numerical range faceting. I 
> basically use a fixed price range of €0 to €10000 in steps of €500 
> which means 20 facet.queries plus an extra facet.query for anything 
> above €10000. I use the inclusive/exclusive query as per my question 
> two days ago so the facets add up to the total number of products. 
> This is done so that the javascript on my search page can accurately 
> show the amount of products returned for a specified range before 
> submitting it to the server by adding up the facet counts for the 
> selected range.
>
> I'm a bit concerned about the amount and size of my request to the 
> server. Especially because there are other numerical values which 
> might be interesting to facet on and I've noticed the server won't 
> response correctly if I add (many) more facet.queries by decreasing 
> the step size. I was really hoping for faceting options for numerical 
> ranges similar to the date faceting options. The functionality would 
> be practically identical as far as I can tell (which isn't very far as 
> I know very little about the internals of Solr) so I was wondering if 
> such options are planned or if I'm overlooking something.
>
> Regards,
>
> gwk
Hello,

Well since I got no response, I flexed my severely atrophied 
Java-muscles (Last time I used the language Swing was new) and dove 
straight into the Solr code. Well, not really, mostly I did some 
copy-pasting and with some assistance from the API Reference I was able 
to add numerical faceting on sortable numerical fields (it seems to work 
for both integers and floating point numbers) with a similar syntax to 
the date faceting.  I also added an extra parameter for whether the 
ranges should be inclusive or exclusive (on either end). And it seems to 
work. Although the quality of my code is not of the same grade as the 
rest of the Solr code (I was amazed how easy it was for me to add this 
feature).
I was wondering if someone is interested in a patch file and if so, 
where should I post it?

Regards,

gwk



As an example, the following query:

http://localhost:8080/select/?q=*%3A*&echoParams=none&rows=0&indent=on&facet=true&
    facet.number=price&f.price.facet.number.start=0&
    f.price.facet.number.end=1000000&f.price.facet.number.gap=10000&
    f.price.facet.number.other=all&f.price.facet.number.exclusive=end

yields the following results:

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
 <int name="status">0</int>
 <int name="QTime">3</int>
</lst>
<result name="response" numFound="63707" start="0"/>
<lst name="facet_counts">
 <lst name="facet_queries"/>
 <lst name="facet_fields"/>

 <lst name="facet_dates"/>
 <lst name="facet_numbers">
  <lst name="price">
    <int name="0.0">1820</int>
    <int name="10000.0">2697</int>
    <int name="20000.0">2588</int>
    <int name="30000.0">2622</int>

    <int name="40000.0">2459</int>
    <int name="50000.0">2455</int>
    <int name="60000.0">2597</int>
    <int name="70000.0">2530</int>
    <int name="80000.0">2518</int>
    <int name="90000.0">2389</int>

    <!-- SNIP -->

    <int name="940000.0">18</int>
    <int name="950000.0">54</int>
    <int name="960000.0">19</int>
    <int name="970000.0">23</int>
    <int name="980000.0">43</int>
    <int name="990000.0">67</int>

    <double name="gap">10000.0</double>
    <double name="end">1000000.0</double>
    <int name="before">0</int>
    <int name="after">2733</int>
    <int name="between">60974</int>
  </lst>

 </lst>
</lst>
</response>