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 Marcelo Carvalho Fernandes <mc...@gmail.com> on 2012/03/22 19:14:40 UTC

Faceted range based on float within velocity not working properly

Hi all!

I'm using Apache Solr 3.5.0 with Tomcat 6.0.32.

My schema.xml has a price field declared as...

   <field name="*preco*" type="*float*" indexed="true" stored="true"
required="false" />

My solrconfig.xml has a a velocity RequestHandler (/browser)) that has the
following facet...

       <str name="facet.range">*preco*</str>
       <int name="f.*preco*.facet.range.start">0</int>
       <int name="f.*preco*.facet.range.end">100</int>
       <int name="f.*preco*.facet.range.gap">10</int>

...and I'm using the default templates in
<SolrDIR>\example\solr\conf\velocity .

The problem is that each peace of range that is being generated has a wrong
upper bound. For example, instead of...

 0 -10
10 - 20
20 - 30
30 - 40
...

...what is being generated is...

 0 - 10
10 - 110
20 - 210
30 - 310
...

I've studied the #display_facet_range macro in VM_global_library.vm and it
looks like the $math.add is contatenating the two operands insted of
producing a sum. I  mean, insted of 10+10=20 it returns 110, instead of
20+10=30 it returns 210.

Any idea what is the problem?

Thanks in advance,

----
Marcelo Carvalho Fernandes
+55 21 8272-7970
+55 21 2205-2786

Re: Faceted range based on float within velocity not working properly

Posted by Erick Erickson <er...@gmail.com>.
Marcelo:

Take a look at: http://wiki.apache.org/solr/HowToContribute

But the short form is to go ahead and open up a JIRA, and attach a patch.
The easiest way to create a patch is to execute "svn diff > SOLR-####.patch"
at the top level (i.e. from the directory that contains "lucene",
"solr", "modules"
etc. and attach that to the JIRA.

#### should be the number of the JIRA you open.....

Hope that helps
Erick

On Sat, Mar 24, 2012 at 9:07 AM, Marcelo Carvalho Fernandes
<mc...@gmail.com> wrote:
> Just to let you know that there can't have any spaces in the begining of a
> line code. That leads us to...
>
>
> #macro(range_get_to_value $inval, $gapval)
> #if(${gapval.class.name} == "java.lang.String")
> $inval$gapval##
> #elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name} ==
> "java.lang.Float")
> #if(${gapval.class.name} == "java.lang.Float")
> #set($inval2 = $math.toDouble($inval.replace(".",",")))
> #set($gapval2 = $gapval)
> #else
> #set($inval2 = $inval)
> #set($gapval2 = $math.toDouble($gapval2.replace(".",",")))
> #end
> $math.toDouble($math.add($gapval,$inval2))##
> #else
> $math.add($inval,$gapval)##
> #end
> #end
>
> ----
> Marcelo Carvalho Fernandes
> +55 21 8272-7970
> +55 21 2205-2786
>
>
> On Sat, Mar 24, 2012 at 9:12 AM, Marcelo Carvalho Fernandes <
> mcf2000@gmail.com> wrote:
>
>> Hi all!
>>
>> I have just solved the problem but I'm not sure if that would be nice to
>> commit to Solr repository.
>> How do I go about having this patch approved?
>>
>> The changed file is VM_global_library.vm and the changed code is
>> highlighted as yellow in the following..
>>
>> #macro(range_get_to_value $inval, $gapval)
>> #if(${gapval.class.name} == "java.lang.String")
>>  $inval$gapval##
>> #elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name}
>> == "java.lang.Float")
>>  #if(${gapval.class.name} == "java.lang.Float")
>>  #set($inval2 = $math.toDouble($inval.replace(".",",")))
>>  #set($gapval2 = $gapval)
>> #else
>>  #set($inval2 = $inval)
>> #set($gapval2 = $math.toDouble($gapval2.replace(".",",")))
>>  #end
>> $math.toDouble($math.add($gapval,$inval2))##
>> #else
>> $math.add($inval,$gapval)##
>> #end
>> #end
>>
>> Thanks in advance.
>>
>> ----
>> Marcelo Carvalho Fernandes
>> +55 21 8272-7970
>> +55 21 2205-2786
>>
>>
>> On Fri, Mar 23, 2012 at 8:13 AM, Marcelo Carvalho Fernandes <
>> mcf2000@gmail.com> wrote:
>>
>>> I went deeper in the problem and discovered that...
>>>
>>> $math.toInteger("10.1") returns 101
>>> $math.toInteger("10,1") returns 10
>>>
>>> Although I'm using Strings in the previous examples, I have a Float
>>> variable from Solr.
>>>
>>> I'm not sure if it is just a Solr problem, just a Velocity problema or
>>> somewhere between them.
>>>
>>> May it be something related to my local/regional settings or so? I ask
>>> that because in BRL (Brazilian Real) the currency format we use is
>>> something line R$1.234,56.
>>>
>>> Any idea?
>>>
>>>
>>>
>>> ----
>>> Marcelo Carvalho Fernandes
>>> +55 21 8272-7970
>>> +55 21 2205-2786
>>>
>>>
>>> On Thu, Mar 22, 2012 at 3:14 PM, Marcelo Carvalho Fernandes <
>>> mcf2000@gmail.com> wrote:
>>>
>>>> Hi all!
>>>>
>>>> I'm using Apache Solr 3.5.0 with Tomcat 6.0.32.
>>>>
>>>> My schema.xml has a price field declared as...
>>>>
>>>>    <field name="*preco*" type="*float*" indexed="true" stored="true"
>>>> required="false" />
>>>>
>>>> My solrconfig.xml has a a velocity RequestHandler (/browser)) that has
>>>> the following facet...
>>>>
>>>>        <str name="facet.range">*preco*</str>
>>>>        <int name="f.*preco*.facet.range.start">0</int>
>>>>        <int name="f.*preco*.facet.range.end">100</int>
>>>>        <int name="f.*preco*.facet.range.gap">10</int>
>>>>
>>>> ...and I'm using the default templates in
>>>> <SolrDIR>\example\solr\conf\velocity .
>>>>
>>>> The problem is that each peace of range that is being generated has a
>>>> wrong upper bound. For example, instead of...
>>>>
>>>>  0 -10
>>>> 10 - 20
>>>> 20 - 30
>>>> 30 - 40
>>>> ...
>>>>
>>>> ...what is being generated is...
>>>>
>>>>  0 - 10
>>>> 10 - 110
>>>> 20 - 210
>>>> 30 - 310
>>>> ...
>>>>
>>>> I've studied the #display_facet_range macro in VM_global_library.vm and
>>>> it looks like the $math.add is contatenating the two operands insted of
>>>> producing a sum. I  mean, insted of 10+10=20 it returns 110, instead of
>>>> 20+10=30 it returns 210.
>>>>
>>>> Any idea what is the problem?
>>>>
>>>> Thanks in advance,
>>>>
>>>> ----
>>>> Marcelo Carvalho Fernandes
>>>> +55 21 8272-7970
>>>> +55 21 2205-2786
>>>>
>>>
>>>
>>

Re: Faceted range based on float within velocity not working properly

Posted by Marcelo Carvalho Fernandes <mc...@gmail.com>.
Just to let you know that there can't have any spaces in the begining of a
line code. That leads us to...


#macro(range_get_to_value $inval, $gapval)
#if(${gapval.class.name} == "java.lang.String")
$inval$gapval##
#elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name} ==
"java.lang.Float")
#if(${gapval.class.name} == "java.lang.Float")
#set($inval2 = $math.toDouble($inval.replace(".",",")))
#set($gapval2 = $gapval)
#else
#set($inval2 = $inval)
#set($gapval2 = $math.toDouble($gapval2.replace(".",",")))
#end
$math.toDouble($math.add($gapval,$inval2))##
#else
$math.add($inval,$gapval)##
#end
#end

----
Marcelo Carvalho Fernandes
+55 21 8272-7970
+55 21 2205-2786


On Sat, Mar 24, 2012 at 9:12 AM, Marcelo Carvalho Fernandes <
mcf2000@gmail.com> wrote:

> Hi all!
>
> I have just solved the problem but I'm not sure if that would be nice to
> commit to Solr repository.
> How do I go about having this patch approved?
>
> The changed file is VM_global_library.vm and the changed code is
> highlighted as yellow in the following..
>
> #macro(range_get_to_value $inval, $gapval)
> #if(${gapval.class.name} == "java.lang.String")
>  $inval$gapval##
> #elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name}
> == "java.lang.Float")
>  #if(${gapval.class.name} == "java.lang.Float")
>  #set($inval2 = $math.toDouble($inval.replace(".",",")))
>  #set($gapval2 = $gapval)
> #else
>  #set($inval2 = $inval)
> #set($gapval2 = $math.toDouble($gapval2.replace(".",",")))
>  #end
> $math.toDouble($math.add($gapval,$inval2))##
> #else
> $math.add($inval,$gapval)##
> #end
> #end
>
> Thanks in advance.
>
> ----
> Marcelo Carvalho Fernandes
> +55 21 8272-7970
> +55 21 2205-2786
>
>
> On Fri, Mar 23, 2012 at 8:13 AM, Marcelo Carvalho Fernandes <
> mcf2000@gmail.com> wrote:
>
>> I went deeper in the problem and discovered that...
>>
>> $math.toInteger("10.1") returns 101
>> $math.toInteger("10,1") returns 10
>>
>> Although I'm using Strings in the previous examples, I have a Float
>> variable from Solr.
>>
>> I'm not sure if it is just a Solr problem, just a Velocity problema or
>> somewhere between them.
>>
>> May it be something related to my local/regional settings or so? I ask
>> that because in BRL (Brazilian Real) the currency format we use is
>> something line R$1.234,56.
>>
>> Any idea?
>>
>>
>>
>> ----
>> Marcelo Carvalho Fernandes
>> +55 21 8272-7970
>> +55 21 2205-2786
>>
>>
>> On Thu, Mar 22, 2012 at 3:14 PM, Marcelo Carvalho Fernandes <
>> mcf2000@gmail.com> wrote:
>>
>>> Hi all!
>>>
>>> I'm using Apache Solr 3.5.0 with Tomcat 6.0.32.
>>>
>>> My schema.xml has a price field declared as...
>>>
>>>    <field name="*preco*" type="*float*" indexed="true" stored="true"
>>> required="false" />
>>>
>>> My solrconfig.xml has a a velocity RequestHandler (/browser)) that has
>>> the following facet...
>>>
>>>        <str name="facet.range">*preco*</str>
>>>        <int name="f.*preco*.facet.range.start">0</int>
>>>        <int name="f.*preco*.facet.range.end">100</int>
>>>        <int name="f.*preco*.facet.range.gap">10</int>
>>>
>>> ...and I'm using the default templates in
>>> <SolrDIR>\example\solr\conf\velocity .
>>>
>>> The problem is that each peace of range that is being generated has a
>>> wrong upper bound. For example, instead of...
>>>
>>>  0 -10
>>> 10 - 20
>>> 20 - 30
>>> 30 - 40
>>> ...
>>>
>>> ...what is being generated is...
>>>
>>>  0 - 10
>>> 10 - 110
>>> 20 - 210
>>> 30 - 310
>>> ...
>>>
>>> I've studied the #display_facet_range macro in VM_global_library.vm and
>>> it looks like the $math.add is contatenating the two operands insted of
>>> producing a sum. I  mean, insted of 10+10=20 it returns 110, instead of
>>> 20+10=30 it returns 210.
>>>
>>> Any idea what is the problem?
>>>
>>> Thanks in advance,
>>>
>>> ----
>>> Marcelo Carvalho Fernandes
>>> +55 21 8272-7970
>>> +55 21 2205-2786
>>>
>>
>>
>

Re: Faceted range based on float within velocity not working properly

Posted by Marcelo Carvalho Fernandes <mc...@gmail.com>.
Hi all!

I have just solved the problem but I'm not sure if that would be nice to
commit to Solr repository.
How do I go about having this patch approved?

The changed file is VM_global_library.vm and the changed code is
highlighted as yellow in the following..

#macro(range_get_to_value $inval, $gapval)
#if(${gapval.class.name} == "java.lang.String")
$inval$gapval##
#elseif(${gapval.class.name} == "java.lang.Float" || ${inval.class.name} ==
"java.lang.Float")
#if(${gapval.class.name} == "java.lang.Float")
#set($inval2 = $math.toDouble($inval.replace(".",",")))
#set($gapval2 = $gapval)
#else
#set($inval2 = $inval)
#set($gapval2 = $math.toDouble($gapval2.replace(".",",")))
#end
$math.toDouble($math.add($gapval,$inval2))##
#else
$math.add($inval,$gapval)##
#end
#end

Thanks in advance.

----
Marcelo Carvalho Fernandes
+55 21 8272-7970
+55 21 2205-2786


On Fri, Mar 23, 2012 at 8:13 AM, Marcelo Carvalho Fernandes <
mcf2000@gmail.com> wrote:

> I went deeper in the problem and discovered that...
>
> $math.toInteger("10.1") returns 101
> $math.toInteger("10,1") returns 10
>
> Although I'm using Strings in the previous examples, I have a Float
> variable from Solr.
>
> I'm not sure if it is just a Solr problem, just a Velocity problema or
> somewhere between them.
>
> May it be something related to my local/regional settings or so? I ask
> that because in BRL (Brazilian Real) the currency format we use is
> something line R$1.234,56.
>
> Any idea?
>
>
>
> ----
> Marcelo Carvalho Fernandes
> +55 21 8272-7970
> +55 21 2205-2786
>
>
> On Thu, Mar 22, 2012 at 3:14 PM, Marcelo Carvalho Fernandes <
> mcf2000@gmail.com> wrote:
>
>> Hi all!
>>
>> I'm using Apache Solr 3.5.0 with Tomcat 6.0.32.
>>
>> My schema.xml has a price field declared as...
>>
>>    <field name="*preco*" type="*float*" indexed="true" stored="true"
>> required="false" />
>>
>> My solrconfig.xml has a a velocity RequestHandler (/browser)) that has
>> the following facet...
>>
>>        <str name="facet.range">*preco*</str>
>>        <int name="f.*preco*.facet.range.start">0</int>
>>        <int name="f.*preco*.facet.range.end">100</int>
>>        <int name="f.*preco*.facet.range.gap">10</int>
>>
>> ...and I'm using the default templates in
>> <SolrDIR>\example\solr\conf\velocity .
>>
>> The problem is that each peace of range that is being generated has a
>> wrong upper bound. For example, instead of...
>>
>>  0 -10
>> 10 - 20
>> 20 - 30
>> 30 - 40
>> ...
>>
>> ...what is being generated is...
>>
>>  0 - 10
>> 10 - 110
>> 20 - 210
>> 30 - 310
>> ...
>>
>> I've studied the #display_facet_range macro in VM_global_library.vm and
>> it looks like the $math.add is contatenating the two operands insted of
>> producing a sum. I  mean, insted of 10+10=20 it returns 110, instead of
>> 20+10=30 it returns 210.
>>
>> Any idea what is the problem?
>>
>> Thanks in advance,
>>
>> ----
>> Marcelo Carvalho Fernandes
>> +55 21 8272-7970
>> +55 21 2205-2786
>>
>
>

Re: Faceted range based on float within velocity not working properly

Posted by Marcelo Carvalho Fernandes <mc...@gmail.com>.
I went deeper in the problem and discovered that...

$math.toInteger("10.1") returns 101
$math.toInteger("10,1") returns 10

Although I'm using Strings in the previous examples, I have a Float
variable from Solr.

I'm not sure if it is just a Solr problem, just a Velocity problema or
somewhere between them.

May it be something related to my local/regional settings or so? I ask that
because in BRL (Brazilian Real) the currency format we use is something
line R$1.234,56.

Any idea?



----
Marcelo Carvalho Fernandes
+55 21 8272-7970
+55 21 2205-2786


On Thu, Mar 22, 2012 at 3:14 PM, Marcelo Carvalho Fernandes <
mcf2000@gmail.com> wrote:

> Hi all!
>
> I'm using Apache Solr 3.5.0 with Tomcat 6.0.32.
>
> My schema.xml has a price field declared as...
>
>    <field name="*preco*" type="*float*" indexed="true" stored="true"
> required="false" />
>
> My solrconfig.xml has a a velocity RequestHandler (/browser)) that has
> the following facet...
>
>        <str name="facet.range">*preco*</str>
>        <int name="f.*preco*.facet.range.start">0</int>
>        <int name="f.*preco*.facet.range.end">100</int>
>        <int name="f.*preco*.facet.range.gap">10</int>
>
> ...and I'm using the default templates in
> <SolrDIR>\example\solr\conf\velocity .
>
> The problem is that each peace of range that is being generated has a
> wrong upper bound. For example, instead of...
>
>  0 -10
> 10 - 20
> 20 - 30
> 30 - 40
> ...
>
> ...what is being generated is...
>
>  0 - 10
> 10 - 110
> 20 - 210
> 30 - 310
> ...
>
> I've studied the #display_facet_range macro in VM_global_library.vm and
> it looks like the $math.add is contatenating the two operands insted of
> producing a sum. I  mean, insted of 10+10=20 it returns 110, instead of
> 20+10=30 it returns 210.
>
> Any idea what is the problem?
>
> Thanks in advance,
>
> ----
> Marcelo Carvalho Fernandes
> +55 21 8272-7970
> +55 21 2205-2786
>