You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Murray Johnston (Jira)" <ji...@apache.org> on 2020/05/19 20:14:00 UTC

[jira] [Created] (SOLR-14500) currency function doesn't work for asymmetric rates

Murray Johnston created SOLR-14500:
--------------------------------------

             Summary: currency function doesn't work for asymmetric rates
                 Key: SOLR-14500
                 URL: https://issues.apache.org/jira/browse/SOLR-14500
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
            Reporter: Murray Johnston


Given a currency field of CurrencyFieldType, the following asymmetric rates:
{code:java}
<rate from="SGD" to="USD" rate="0.72204658296750000000" />
<rate from="USD" to="SGD" rate="1.45506540000000000000" /> {code}
and a price field with a value of "24.500000,SGD"

The following usage of the currency function as a pseudo-field in a query returns incorrect values:
{code:java}
curl -s 'http://10.43.41.81:32080/solr/product_details/select?fl=price,price_sgd%3Acurrency(price,SGD)&fq=id%3A57373P16&q=*%3A*&rows=1'
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "fl":"price,price_sgd:currency(price,SGD)",
      "fq":"id:57373P16",
      "rows":"1"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "price":"24.500000,SGD",
        "price_sgd":25.74}]
  }} {code}
I have traced this to the fact that CurrencyFieldType.getValueSource returns a value that is first converted to the default currency.  When dealing with asymmetric rates this always risks introducing conversion errors.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org